使用 maskToBounds 设置为 true 和 cornerRadius 不会改变视图

Using maskToBounds set to true with cornerRadius doesn't change the view

我创建了一个简单的文本字段来试验 cornerRadius 和 maskToBounds,我想如果我想绕过文本字段的角,除了设置层,像这样:

myTextField.layer.borderWidth = 1
myTextField.layer.cornerRadius = 3
myTextField.layer.masksToBounds = true
myTextField.textAlignment = .center

然而,当我注释掉 myTextField.layer.masksToBounds = true 时,文本字段仍然以圆角显示在屏幕上。

那么到底什么时候需要使用maskToBounds,为什么这里不需要呢? 整个屏幕的背景颜色为白色,textField 内没有任何其他元素的图像。

我认为,

这取决于 masksToBounds,它确定子层是否被裁剪到接收器的边界。因此,如果是,则将匹配图层边界的隐式蒙版应用于图层,包括 cornerRadius 属性.

的效果

shadow 是在 View 之外完成的效果,将 masksToBounds 设置为 YES 将告诉 UIView 不要在其外部绘制任何东西。

例如

如果您在包含图像内容的 CALayer 上进行设置,图像仍会绘制在圆角半径边界之外。您可以通过将子层 masktoBounds 设置为 True 来解决此问题,但您没有将 masktobounds 设置为 true 时阴影不会出现,因为它们将被遮挡。