【问题标题】: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)

【问题讨论】:

标签: ios swift uiview


【解决方案1】:

无法按照您的尝试实现。阴影始终应用在UIView 的边界之外,如果不遮盖UIView 的边界,cornerRadius 将不可见。因此,最好在UILabel 后面添加一个UIView,并重用该函数,编写一个UIView 的扩展,返回一个UIView,其中包含您要应用阴影的视图。

【讨论】:

  • 这是可能的,正如我在问题中所说,我在整个应用程序中使用完全相同的代码多次执行此操作,并且没有添加额外的 UIView
  • @Kevin2566 - 虽然 Catherine 对于所有UIView 都表现出这个问题可能并不正确,但她的处方似乎对于UILabel 场景是合理的。
【解决方案2】:

在这里,您需要使用两个不同的视图,一个用于圆角,另一个用于显示阴影,因为 Mask To Bounds 和 Clip To Bounds 功能使这两个属性不能一起使用。由于圆角半径需要裁剪可能包含阴影的边缘。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2014-08-29
    • 2020-09-12
    • 2019-12-12
    相关资源
    最近更新 更多