Ios UIView块动画不工作
我有一个自定义视图,用于绘制详图索引/编号,我当前将其作为子视图添加到UIImageView中。它按预期工作,但我想用弹簧一样的效果为操作设置动画。我正在使用以下代码,但它不起作用。执行块时没有动画:Ios UIView块动画不工作,ios,objective-c,animation,uiview,uiviewanimation,Ios,Objective C,Animation,Uiview,Uiviewanimation,我有一个自定义视图,用于绘制详图索引/编号,我当前将其作为子视图添加到UIImageView中。它按预期工作,但我想用弹簧一样的效果为操作设置动画。我正在使用以下代码,但它不起作用。执行块时没有动画: /* ViewController */ UIImageView *iv = self.imageView; ZGCBubbleView *bubbleView = [[ZGCBubbleView alloc] init]; bubbleView.hidden = YES; [iv a
/* ViewController */
UIImageView *iv = self.imageView;
ZGCBubbleView *bubbleView = [[ZGCBubbleView alloc] init];
bubbleView.hidden = YES;
[iv addSubview:bubbleView];
// UIView animation test
[UIView animateWithDuration:2.0
delay:0
usingSpringWithDamping:0.5
initialSpringVelocity:0.5
options:UIViewAnimationOptionAllowAnimatedContent & UIViewAnimationOptionLayoutSubviews
animations:^{
bubbleView.hidden = NO;
[self.view layoutIfNeeded]; // tried this
}
completion:nil];
我尝试过为隐藏属性和alpha属性设置动画,但结果相同。我还尝试过为addSubview方法设置动画,没有区别。我开始用一个更简单的动画作为概念的证明,但那也不起作用
上述代码在voidViewDidDisplay:BOOLanimated循环期间调用的方法中执行。这是否与此有关,因为动画是在主线程期间执行的?我读过这样的东西,但不确定。另外,我正在为UIImageView使用自动布局,但我认为在这种情况下这并不重要,因为动画将应用于UIImageView的自定义子视图
感谢您的帮助。试试这个
UIButton *catchButton = (UIButton *)sender;
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut//UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat |
animations:^{
catchButton.alpha = 0.4;
catchButton.enabled = NO;
}
completion:NULL];
最好使用alpha
UIImageView *iv = self.imageView;
ZGCBubbleView *bubbleView = [[ZGCBubbleView alloc] init];
bubbleView.alpha = 0;
// bubbleView.hidden = YES;
[iv addSubview:bubbleView];
// UIView animation test
[UIView animateWithDuration:2.0
delay:0
usingSpringWithDamping:0.5
initialSpringVelocity:0.5
options:UIViewAnimationOptionAllowAnimatedContent & UIViewAnimationOptionLayoutSubviews
animations:^{
// bubbleView.hidden = NO;
bubbleView.alpha = 1;
//[self.view layoutIfNeeded]; // tried this
}
completion:nil];
您正在尝试为隐藏的视图设置动画。您将永远看不到您的动画。试试我的答案,没什么区别。实际上,“隐藏”属性只是我尝试设置动画的少数属性之一,我也尝试将子视图添加为动画块的一部分。块的执行是因为我可以看到我的子视图,而不是以动画的方式。你能提供一个示例代码让我可以直接观察到你是否试图在视图中淡入淡出?淡入动画是否按预期设置?或者你正在尝试制作其他方面的动画?如果最好使用alpha,为什么这段代码也会制作隐藏动画?是的。这毫无意义。更新了代码。只添加了几行代码,没有编辑太多代码:伙计们,这很有效。我将@BhavukJain标记为正确答案,因为为alpha属性设置动画是使动画工作的原因。出于某种原因,我认为设置隐藏属性的动画也应该有效,但事实并非如此。@Rob查看UIView alpha和UIView hidden的文档。请注意文档中关于该属性是否可设置动画的内容。谢谢@rmaddy。我阅读了参考资料,但我很确定我见过使用隐藏属性的动画代码。也许是在不同的背景下。