Swift @ IBDesignable / @ IBInspectable UIView造型

时间:2017-09-22 02:42:58

标签: ios iphone swift xcode uiview

我正在尝试在表格单元格原型中设置UIView样式以使其具有阴影并进行更多样式定制,但出于某种原因,当我构建项目时,不会应用更改。

我在单独的文件CustomView.swift

中有下一个代码
import UIKit

@IBDesignable
class CustomView: UIView {



    @IBInspectable var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = cornerRadius > 0
        }
    }

    @IBInspectable var shadowOpacity: Float = 0 {
        didSet {
            layer.shadowOpacity = shadowOpacity
        }
    }

    @IBInspectable var shadowRadius: CGFloat = 0 {
        didSet {
            layer.shadowRadius = shadowRadius
        }
    }

    @IBInspectable var shadowOffset: CGSize = CGSize(width: 0.0, height: 0.0) {
        didSet {
            layer.shadowOffset = shadowOffset
        }
    }

    @IBInspectable var shadowColor: UIColor? = UIColor(red: 157/255, green: 157/255, blue: 157/255, alpha: 1.0) {
        didSet {
            layer.shadowColor = shadowColor?.cgColor
        }
    }

}

我在Xcode 9的“属性检查器”中看到了该字段 "Attribute inspector" of Xcode 9

但是在构建之后,基本上没有应用更改我看不到视图的阴影。

最有趣的是,我使用相同的方法来自定义文本字段和按钮,此代码适用于UIButton/UITextField但不适用于UIView

有人知道为什么它不适用于UIView

非常感谢任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:3)

检查您的代码:

layer.masksToBounds = cornerRadius > 0

将其更改为:

layer.masksToBounds = false

并确保您的clipsToBounds在代码中设置为false,如下所示:

clipsToBounds = false

或在你的故事板中如此:

enter image description here

答案 1 :(得分:0)

请更新功能

@IBInspectable
    var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = cornerRadius
        }
    }