使用带有cornerRadius的maskToBounds设置为true不会更改视图

时间:2017-09-20 08:54:21

标签: ios uiview uitextfield calayer

我创建了一个简单的文本字段来试验cornerRadius和maskToBounds,并认为如果我想绕过文本字段的边角,除了设置图层的cornerRadius外,我还需要将图层的maskToBounds设置为true,像这样:

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

但是当我评论myTextField.layer.masksToBounds = true时,屏幕上仍然显示有圆角的文字字段。

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

1 个答案:

答案 0 :(得分:0)

我想,

它取决于maskToBounds,它确定子层是否被剪切到接收器的边界。因此,如果是,则将与图层边界匹配的隐式遮罩应用于图层,包括cornerRadius属性的效果。

阴影是在视图外部完成的效果,maskToBounds设置为YES将告诉UIView不要绘制任何超出其自身的内容。

对于前。

如果在具有图像内容的CALayer上设置该图像,则仍会在角半径边界外绘制图像。你可以通过将sublayer masksToBounds设置为True来解决这个问题,但是你没有设置masktobounds为true,因为阴影不会显示,因为它们会被屏蔽掉。