我正在尝试将淡入淡出应用于我在另一个上面以编程方式创建的UIView .
[UIView animateWithDuration:0.5 animations:^(void) {
[self.view setAlpha:0];
}
completion:^(BOOL finished){
[self.view removeFromSuperview];
}];
完成的事件在0.5秒之后被正确调用,但我没有看到任何淡入淡出(我应该看到底部的UIView) .
如果不使用alpha,我会移开UIView它可以工作(我看到底部UIView,而顶部UIView滑落),所以它似乎是一个与alpha相关的问题,但我无法弄清楚什么是错的!
[UIView animateWithDuration:0.5 animations:^(void) {
CGRect o = self.view.frame;
o.origin.x = 320;
self.view.frame = o;
}
completion:^(BOOL finished){
[self.view removeFromSuperview];
}];
我之前使用过alpha动画,它们通常以这种方式工作......
6 回答
尝试明确地将
opaque
设置为NO
. 我有同样的问题和设置解决了我的问题 . 显然,不透明的视图似乎不能很好地与alpha一起使用 .归功于Hampus Nilsson的评论 .
这将正常工作,因为
options:UIViewAnimationOptionCurveEaseInOut
,你的褪色会更好 .我遇到了确切的问题 . 在我的情况下,我希望首先隐藏视图,所以我将
hidden
设置为true
. 我想更改alpha
值会自动更改hidden
属性,但事实并非如此 .因此,如果您希望首先隐藏视图,请将其
alpha
设置为0
.我有完全相同的问题,没有一个建议对我有用 . 我通过使用图层不透明度来克服这个问题 . 这是显示图层的代码(使用Xamarin,但你会得到这个想法):
这是为了淡出相同的zoomView
我在我的情况下遇到同样的问题因为线程所以我最终在主线程中写了动画块 .
还有一块拼图 . 当您设置动画约束时,可以在动画块之外设置新约束常量,然后在动画中调用
layoutIfNeeded
.对于视图alphas,这些需要直接在动画块内设置 .
改变这个:
至