视图上的角半径和阴影突然不起作用

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 功能使这两个属性不能一起使用。由于圆角半径需要裁剪可能包含阴影的边缘。

所以要让这两个东西都在你想要圆角的视图后面使用阴影视图。

【讨论】:

以上是关于视图上的角半径和阴影突然不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 UIImageView 上设置角半径不起作用

嵌入谷歌地图的iFrame上的CSS边框半径,不起作用

<input /> 上的 Opera 12.14 边框半径不起作用

带有 selectedIndex 设置 matStepperNext/matStepperPrevious 的角步进器不起作用

UITextView 的动态角半径

UIView clipsToBounds不起作用