【问题标题】:Swift @IBDesignable/@IBInspectable UIView stylingSwift @IBDesignable/@IBInspectable UIView 样式
【发布时间】:2017-09-22 02:42:57
【问题描述】:

我正在尝试为我的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 的“属性检查器”内的字段

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

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

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

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: ios iphone swift xcode uiview


    【解决方案1】:

    检查您的代码:

    layer.masksToBounds = cornerRadius > 0
    

    将其更改为:

    layer.masksToBounds = false
    

    还要确保您的clipsToBounds 设置为false,代码如下:

    clipsToBounds = false
    

    或者在你的故事板中像这样:

    【讨论】:

    • 嗨,谢谢你回来找我。我尝试了您的代码建议,但对我没有用。这就是我的故事板看起来像这样storyboard 并且在构建项目之后,这是我在 iPhone8 模拟器中看到的 sim_result 没有阴影。我的 CustomView.swift 中的代码与您建议的更改相同。
    • 在您的故事板屏幕截图中我看不到 clipsToBounds 标志,请检查该标志是否未设置为 true,也应该为 false
    • 嗨,是的,我认为在将 clipToBounds 设置为 false 后,它开始起作用了。我真的很感谢你的帮助。谢谢
    【解决方案2】:

    请更新功能

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

    【讨论】:

    • 您好,感谢您的回复,我尝试了您的代码建议,但对我没有效果。这就是我的故事板看起来像这样storyboard 并且在构建项目之后,这是我在 iPhone8 模拟器中看到的 sim_result 没有阴影。我的 CustomView.swift 中的代码与您建议的更改相同。
    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多