如何更新 UIView 的图层属性并为其子视图保留图层?
Posted
技术标签:
【中文标题】如何更新 UIView 的图层属性并为其子视图保留图层?【英文标题】:How to update a layer property for UIView and keep the layer for it subview? 【发布时间】: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 中处理它?是我将按钮添加到的另一层吗? 感谢您的建议和帮助!
【问题讨论】:
【参考方案1】:问题不在于您对图层的所有更改,而只是阴影。那是因为阴影被应用到合成 Alpha 通道的图层上,并且包括它的子图层。
你可以:
-
使用阴影路径而不是标准偏移量
添加一个不同的子层来指定阴影(它是按钮的兄弟)
【讨论】:
以上是关于如何更新 UIView 的图层属性并为其子视图保留图层?的主要内容,如果未能解决你的问题,请参考以下文章
如何访问使用 Paintcode 生成的 UIView 自定义类中的图层?