asl*_*nci 29 iphone ios8 uiblureffect uivisualeffectview
我有一个原型单元,我把UIVisualEffectView
它放在里面ContentView
.视觉效果视图的模糊风格很暗,而且Vibrancy关闭.然后我使用IB将视觉效果视图的alpha设置为0.5.
然后在运行时,我收到一条警告:
<UIVisualEffectView ...> is being asked to animate its opacity. This will cause the effect to appear broken until opacity returns to 1.
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么会出现此警告以及如何正确设置此alpha属性.
zvo*_*cek 14
问题是你想要动画什么.如果是效果,则无法通过alpha
属性为其设置动画.但是,从iOS 9开始,您可以通过在动画块中设置效果来设置动画.
UIVisualEffectView* view = [[UIVisualEffectView alloc] initWithFrame:self.view.bounds];
view.effect = nil;
[UIView animateWithDuration:0.3 animations:^{
view.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
}];
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过设置包装器视图的alpha动画来设置效果,如其他答案中所建议的那样(甚至在iOS 8上工作).
如果要为视觉效果视图(子视图)的内容设置动画,请contentView
改为为该属性设置动画(您应该使用该属性添加效果视图的子视图).
[UIView animateWithDuration:0.3 animations:^{
view.contentView.alpha = 1.0;
}];
Run Code Online (Sandbox Code Playgroud)
总而言之,你永远不应该改变UIVisualEffectView本身的alpha,因为它很可能不是你想要的.
use*_*321 12
据我所知,你不能改变视觉效果视图的alpha.阿尔法总是必须是一个.
通过设置背景颜色的 alpha 而不是视觉效果视图,可以实现所需的效果.子视图应添加到视觉效果视图视图中,它们不受背景模糊的影响.
必须在上面的"查看效果视图"选项中选择" 活力"效果.
见图:
user1179321 definetely right.根据UIVisualEffectView文档;
使用UIVisualEffectView类时,请避免小于1的Alpha值.创建部分透明的视图会导致系统在屏幕外渲染过程中组合视图和所有关联的子视图.UIVisualEffectView对象需要组合为它们分层的内容的一部分,以便看起来正确.在视觉效果视图或其任何超视图上将alpha设置为小于1会导致许多效果看起来不正确或根本不显示.
https://developer.apple.com/library/ios/documentation/uikit/reference/UIVisualEffectView/index.html
归档时间: |
|
查看次数: |
23503 次 |
最近记录: |