1

私は void メソッドを持っUIViewていUIViewます. このボイドを実行する必要があります:animate[NSTimer scheduledTimerWithTimeInterval:duration target:self selector:@selector(METHOD) userInfo:nil repeats:NO];Arguments

-(void)showNotificationViewWithText:(NSString *)title andTextColor:(UIColor *)titleTintColor andNotificationBackGroundColor:(UIColor *)backGroundColor andDuration:(float)duration direction:(BOOL) up:

または、遅延後に UIView を別のポイントに移動する方が良い考えがありますか?

4

4 に答える 4

3

遅延後に任意のコードを実行するための非常に柔軟な方法は、GCD 関数 dispatch_after()です。ブロックを引数として取り、任意の引数と戻り値の型で任意のメソッドを呼び出すことができます:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    // do whatever you want, e.g.
    [self showNotificationViewWithText: ....];
});

(ヒント: Xcode エディターで「dispatch_after」と入力するだけで、後はオートコンプリートに任せてください!)

于 2013-10-27T09:27:31.273 に答える
2

NSObject クラスの performSelector:withObject:afterDelay:メソッドを使用できます。

 NSDictionary *obj = [[NSDictionary alloc] initWithObjectsAndKeys:title,@"title",titleTintColor,@"titleTintColor",backGroundColor,@"backGroundColor",[NSNumber numberWithFloat:duration],@"duration",[NSNumber numberWithBool:up],@"up" nil];
 [self performSelector:@selector(showNotificationViewWithText:) withObject:obj afterDelay:2.0];  

-(void)showNotificationViewWithText:(NSDictionary *)arg
{
    NSDictionary *title = [arg objectForkey:@"title"];
    UIColor      *titleTintColor = [arg objectForkey:@"titleTintColor"];
    UIColor      *backGroundColor = [arg objectForkey:@"backGroundColor"];
    float        duration = [arg objectForkey:@"duration"];
    BOOL         up = [arg objectForkey:@"up"];

    //code
}
于 2013-10-27T09:18:08.097 に答える
0

タイマーをスケジュールするときは、nstimer引数を渡すだけです。このようにしてみてください:-

     [NSTimer    
   scheduledTimerWithTimeInterval:duration 
    target:self selector:@selector(METHOD:) 
   userInfo:nil repeats:NO];


  -(void)METHOD:(NSTimer*) timer
  {
 // your code
   }    
于 2013-10-27T09:31:57.640 に答える
0

または、遅延後に UIView を別のポイントに移動する方が良いアイデアはありますか?

ビューをアニメーション化する場合は、アニメーション メソッドで遅延を指定できます

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
于 2013-10-27T10:58:32.687 に答える