2013-08-12 42 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:的新方法乾淨且易於使用。查看動畫變得複雜得快。至於改變背景顏色等視圖/圖層屬性,我認爲這不重要。 –