CALayer:在图层内容上维护cornerRadius
Posted
技术标签:
【中文标题】CALayer:在图层内容上维护cornerRadius【英文标题】:CALayer: Maintaining cornerRadius on layer's contents 【发布时间】:2012-09-18 17:35:08 【问题描述】:我一直在查看CALayer's documentation,似乎cornerRadius
只影响图层的背景,而不影响contents
。
有没有办法将圆角半径应用于整个 CALayer
而不会对性能造成很大影响?
我看到了有关口罩的建议,但这听起来很昂贵。我还看到了有关手动绘制contents
的建议,但我真的不知道从哪里开始。我对在上下文中渲染图像有所了解,但我不知道我应该如何将其绘制到具有角半径的CALayer
的内容视图上。我知道的最好的方法是继承CALayer
并覆盖drawInContext
方法并使用CGContextDrawImage
。
非常感谢所有帮助,但重申问题:“有没有办法将圆角半径应用于整个CALayer
而不会对性能造成很大影响?”
【问题讨论】:
【参考方案1】:cornerRadius
确实适用于整个 CALayer,并且不会对性能造成很大影响。如果您没有看到圆角的内容,那是因为您忘记将masksToBounds
设置为YES。
【讨论】:
Eesh。你是对的。我想我没有做足够的研究。谢谢!虽然,这让我对为某些事情绘制 CALayer 的上下文感到好奇。 好!绘图很容易,你应该学会使用它。我的书教你如何:apeth.com/iosBook/ch15.html。如果您想要这样做,您可以轻松地通过圆角矩形形状裁剪任何绘图。但在这种情况下没有必要。 请记住 maskToBounds 将删除您拥有的任何阴影效果。 @kabram 是的,但 OP 担心性能,在这种情况下,头脑简单的阴影无论如何都被排除在外。如果您想在圆角矩形后面显示阴影,有一些巧妙有效的方法,例如我的示例所示:github.com/mattneub/Programming-iOS-Book-Examples/blob/master/…以上是关于CALayer:在图层内容上维护cornerRadius的主要内容,如果未能解决你的问题,请参考以下文章