如何更新UIView的图层属性并保留图层的子视图?

时间:2013-07-02 19:26:01

标签: iphone ios uiview layer subview

这可能是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中处理它?是我添加按钮的某种另一层吗? 感谢您的建议和帮助!

1 个答案:

答案 0 :(得分:1)

问题不在于您对图层的所有更改,而只是阴影。这是因为阴影应用于合成alpha通道的图层,包括其子图层。

你可以:

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