gpt4 book ai didi

ios - 子类化 UIView、UIViewController 并在 Storyboard 和 Interface Builder 中直观地显示默认值

转载 作者:行者123 更新时间:2023-11-30 12:34:53 39 4
gpt4 key购买 nike

有没有办法在 Swift 中设置 UIView 和 UIViewController 的子类,以便使用 Xcode 界面生成器创建的所有新 UIView 都使用我的子类中的默认值。

换句话说,如果我为 UIView 的子类创建此代码:

import UIKit

@IBDesignable
class GenericUIView: UIView {
// MARK: Initialization

@IBInspectable
var myBackgroundColor : UIColor = UIColor.orange

override init (frame: CGRect) {
super.init(frame: frame)
setup()
}


required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}

func setup() {
self.layer.backgroundColor = (myBackgroundColor as! CGColor)
}

}

我需要做什么才能立即在 Xcode 的 Interface Builder 中看到更改?

我希望能够为我的应用程序设置主题,而无需手动编辑所有属性,并且仍然可以直观地看到它们,而无需构建解决方案。我知道通过重写drawRect() 是有可能的,但是当它可能只是设置背景和文本颜色时,这可能会降低我的应用程序的性能。

如果可能,请提供 Swift 语言的解决方案。

帕特里克

最佳答案

这有帮助吗?不过,您必须更改所有 View 才能使用此类而不是 UIView。您可以以相同的方式添加其他属性,例如背景颜色(正如您似乎知道的那样)。

//
// DesignableView.swift
//
import UIKit

@IBDesignable
class DesignableView: UIView {

@IBInspectable var borderWidth: CGFloat = 0.0 {
didSet {
self.layer.borderWidth = borderWidth
}
}

@IBInspectable var borderColor: UIColor = UIColor.clear {
didSet {
self.layer.borderColor = borderColor.cgColor
}
}

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

关于ios - 子类化 UIView、UIViewController 并在 Storyboard 和 Interface Builder 中直观地显示默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43006570/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com