视图上的角半径和阴影突然不起作用
Posted
技术标签:
【中文标题】视图上的角半径和阴影突然不起作用【英文标题】:Corner radius and shadow on a view suddenly not working 【发布时间】:2020-03-31 02:50:49 【问题描述】:多个放置在我的应用程序中,我有阴影和角半径的视图。我尝试添加一个新视图,突然我重用的代码不再起作用了。我只能设置角半径或阴影,这取决于我为masksToBounds
设置的内容。这是我用于错误视图和其他视图的代码:
itemCountLabel.layer.masksToBounds = false
itemCountLabel.layer.cornerRadius = itemCountLabelSize / 2.0
itemCountLabel.layer.shadowColor = UIColor.black.cgColor
itemCountLabel.layer.shadowOpacity = 0.25
itemCountLabel.layer.shadowRadius = 5
itemCountLabel.layer.shadowOffset = CGSize(width: 4, height: 4)
contentView.addSubview(itemCountLabel)
【问题讨论】:
见***.com/q/55863161/1271826 【参考方案1】:无法按照您的尝试实现。阴影始终应用在UIView
的边界之外,如果不遮盖UIView
的边界,cornerRadius
将不可见。因此,最好在UILabel
后面添加一个UIView
,并重用该函数,编写一个UIView
的扩展,返回一个UIView
,其中包含您要应用阴影的视图。
【讨论】:
这是可能的,正如我在问题中所说,我在整个应用程序中使用完全相同的代码多次执行此操作,并且没有添加额外的UIView
。
@Kevin2566 - 虽然 Catherine 对于所有UIView
都表现出这个问题可能并不正确,但她的处方似乎对于UILabel
场景是合理的。【参考方案2】:
在这里,您需要使用两个不同的视图,一个用于圆角,另一个用于显示阴影,因为 Mask To Bounds 和 Clip To Bounds 功能使这两个属性不能一起使用。由于圆角半径需要裁剪可能包含阴影的边缘。
所以要让这两个东西都在你想要圆角的视图后面使用阴影视图。
【讨论】:
以上是关于视图上的角半径和阴影突然不起作用的主要内容,如果未能解决你的问题,请参考以下文章
<input /> 上的 Opera 12.14 边框半径不起作用
带有 selectedIndex 设置 matStepperNext/matStepperPrevious 的角步进器不起作用