Ase*_* H. 11 iphone block objective-c delay ios
我试图在翻转动画发生的标签上执行动画,在完成后和延迟之后,标签的文本会发生变化.
似乎延迟从未发生过.翻转完成后文本会立即更改,尽管我在完成块中使用 UIView animateWithDuration:0.5 延迟:4.0.如果相反,我performSelector在completion block(注释声明)中使用延迟,它按预期工作.知道为什么延迟值被忽略了吗?
- (void) flipShapeWithText:(NSString *)text {
[UIView transitionWithView:someLabel duration:0.15 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
someLabel.text = text;
}completion:^ (BOOL finished){
// [self performSelector:@selector(updateLabelText:) withObject: @"New Text" afterDelay:4.0];
[UIView animateWithDuration:0.5
delay:4.0
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{
currentShapeNameLabel.text = @"New Text" ;}
completion:nil];
}];
}
Run Code Online (Sandbox Code Playgroud)
XJo*_*nes 20
该delay的PARAM animateWithDuration:delay:options:animations:completion指定后的动画之前的延迟.您正在动画块中设置文本,因此在延迟结束后,动画开始立即更改文本,因为该更改不可动画.要执行所需操作,请按如下所示更改完成块中的文本:
[UIView animateWithDuration:0.5
delay:4.0
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{ // anything animatable }
completion:^(BOOL finished) {
currentShapeNameLabel.text = @"New Text" ;}];
Run Code Online (Sandbox Code Playgroud)
如果希望动画立即启动,可以消除延迟.如果您希望在动画完成后4秒发生文本更改,请使用dispatch_after()或在完成块中添加该延迟performSelector:withDelay:.
就我而言,这个问题是在前面我打电话的代码UIView的snapshotViewAfterScreenUpdates一个值true.改变它后false它工作正常.
| 归档时间: |
|
| 查看次数: |
16064 次 |
| 最近记录: |