iOS 界面生成器中的阴影视图

iOS shadow view in interface builder

我正在尝试通过界面生成器向某些视图添加阴影。我似乎无法让阴影影响我的观点。我查看的所有资源都指向相同的代码,所以我不确定自己做错了什么。

界面生成器

Interface Builder 扩展代码

import Foundation
import UIKit

extension UIView {

    //cut irrelevant code for SO Question

    @IBInspectable
    var masksToBounds: Bool {
        get {
            return layer.masksToBounds
        }
        set {
            layer.masksToBounds = newValue
        }
    }


    // Shadow handling
    @IBInspectable
    var shadowColor: UIColor? {
        get {
            if let color = layer.shadowColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
        set {
            if let color = newValue {
                layer.shadowColor = color.cgColor
            } else {
                layer.shadowColor = nil
            }
        }
    }

    @IBInspectable
    var shadowOpacity: Float {
        get {
            return layer.opacity
        }
        set {
            layer.opacity = newValue
        }
    }


    @IBInspectable
    var shadowRadius: CGFloat {
        get {
            return layer.shadowRadius
        }
        set {
            layer.shadowRadius = newValue
        }
    }

    @IBInspectable
    var shadowOffset: CGSize {
        get {
            return layer.shadowOffset
        }
        set {
            layer.shadowOffset = newValue
        }
    }


}

视图布局

这是结果

我猜这是您要添加阴影的自定义搜索栏。我猜它不可见的原因是因为您在控制器和情节提要中的视图大小相同。尝试使情节提要视图中有一个容器视图,并在情节提要视图中添加一些填充,并将该阴影添加到该容器视图中。这可能会显示一些结果。

您的 shadowOpacity 属性 正在访问错误的层 属性。它在应该 layer.shadowOpacity 时访问 layer.opacity。另外,您的 shadowRadius 太大了,可能应该在 5 左右(当然,这取决于您要做什么),而不是 500。