使用 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 时阴影不会出现,因为它们将被遮挡。
我创建了一个简单的文本字段来试验 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 时阴影不会出现,因为它们将被遮挡。