【问题标题】:UIView reflect CALayer propertiesUIView 反映 CALayer 属性
【发布时间】:2013-08-12 07:15:13
【问题描述】:

当更改 UIView 的基本视图属性(例如 backgroundColor、alpha/opacity、frame)时,实际上是在底层获得了这些更改吗?简单地说,例如当我更改 UIViews alpha 时,它实际上是 CALayers opacity 属性发生了变化吗?

【问题讨论】:

    标签: iphone ios uikit core-animation


    【解决方案1】:

    在 iOS 上,视图是层的相当薄的包装器,并且大多数视图属性(如框架/边界、alpha 等)确实只是在操纵底层。您可以在视图控制器中使用一点 sn-p 代码来验证您的 alpha 示例:

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        self.view.alpha = 0.5f;
        NSLog(@"Layer alpha: %f", self.view.layer.opacity);
    
        self.view.layer.opacity = 1.0f;
        NSLog(@"View alpha: %f", self.view.alpha);
    }
    

    打印出来:

    Layer alpha: 0.500000
    View alpha: 1.000000
    

    所以我们可以看到view alpha和layer opacity是一回事。

    【讨论】:

    • 谢谢 Mike 你能解释一下什么时候用什么吗?我在某处读到“控件的 UIView,eyecandy 的图层”。您对此有何看法?
    • 查看更容易。尽可能使用视图动画。 animateWithDuration:animation: 形式的新方法干净且易于使用。视图动画很快变得复杂。至于更改背景颜色等视图/图层属性,我认为这并不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多