2013-08-12 40 views
0

当更改UIView的基本视图属性(例如backgroundColor,alpha/opacity,frame)时,它实际上是在引擎盖下获取这些更改的图层吗?简单来说,当我更改UIViews alpha时,例如实际上是否改变了CALayers opacity属性?UIView反映CALayer属性

回答

1

在iOS上,视图是相当薄层的包装器,像frame/bounds,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 

所以我们可以看到,鉴于α和图层不透明度都是一样的东西。

+0

谢谢麦克你还可以解释什么时候用什么?我在某处读到“UIView控制,eyecandy图层”。你对此有何想法? – Krajsnick

+0

视图更容易。尽可能使用视图动画。形式为animateWithDuration:animation:的新方法干净且易于使用。查看动画变得复杂得快。至于改变背景颜色等视图/图层属性,我认为这不重要。 –