【问题标题】:How to update a layer property for UIView and keep the layer for it subview?如何更新 UIView 的图层属性并为其子视图保留图层?
【发布时间】:2013-07-02 19:26:00
【问题描述】:

这可能是一个关于 iOS 层的初学者问题,但我想不出一个正确的方法来处理它......

我以编程方式创建一个 UIView 并向其添加一个按钮。

UIView *subview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; 
UIButton *mybutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[mybutton setTitle:@"Test1" forState:UIControlStateNormal];
mybutton.frame = CGRectMake(0,0,50,50);
[subview mybutton];

比我对子视图演示文稿进行一些操作来更改它的图层属性。例如,我更改视图边框半径并添加阴影:

[subview.layer setCornerRadius:10.0f];
[subview.layer setShadowColor:[UIColor blackColor].CGColor];
[subview.layer setShadowOpacity:0.8];
[subview.layer setShadowRadius:3.0];

我看到 mybutton 的这些层也发生了变化,而不仅仅是子视图的问题。 例如按钮标题也有阴影。 我制作了一个示例屏幕截图以更好地解释我的问题: http://img46.imageshack.us/img46/8923/havq.png

如何在 iOS 中处理它?是我将按钮添加到的另一层吗? 感谢您的建议和帮助!

【问题讨论】:

    标签: iphone ios uiview layer subview


    【解决方案1】:

    问题不在于您对图层的所有更改,而只是阴影。那是因为阴影被应用到合成 Alpha 通道的图层上,并且包括它的子图层。

    你可以:

    1. 使用阴影路径而不是标准偏移量
    2. 添加一个不同的子层来指定阴影(它是按钮的兄弟)

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多