【发布时间】:2016-02-24 08:10:46
【问题描述】:
是否可以在故事板上创建可重用的堆栈视图,以便以后动态生成?一种模板/小部件/组件。
我知道我可以通过一个类来做到这一点,但如果我能够直观地生成一组可以在以后重用的组件,我也许可以让我们的设计师直接对故事板进行更改。
【问题讨论】:
标签: ios xcode uistackview
是否可以在故事板上创建可重用的堆栈视图,以便以后动态生成?一种模板/小部件/组件。
我知道我可以通过一个类来做到这一点,但如果我能够直观地生成一组可以在以后重用的组件,我也许可以让我们的设计师直接对故事板进行更改。
【问题讨论】:
标签: ios xcode uistackview
是的——您可以使用任何 UIView 执行此操作。这方面有很多教程(例如http://onedayitwillmake.com/blog/2013/07/ios-creating-reusable-uiviews-with-storyboard/)
基本思路是将一个拖到 Storyboard 或 XIB 上,为它创建一个自定义类,然后实现视图的 awakeFromNib 来加载它。
【讨论】:
是的。是的。
然后创建一个扩展 UIStackView 的类。
class stackView: UIStackView {
var contentView : UIStackView!
override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}
required init(coder: NSCoder) {
super.init(coder: coder)
xibSetup() }
func xibSetup() {
contentView = loadViewFromNib()
contentView.frame = bounds
contentView.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
addSubview(contentView)
}
func loadViewFromNib() -> UIStackView! {
let view: UIStackView? = Bundle.main.loadNibNamed("stackView", owner: nil, options: nil)?.first as! UIStackView?
return view
}
创建一个 viewController。添加一个 stackView 到它。在 StackView 属性中,转到名为自定义类的第 3 个栏,对于类名,请给出 stackView 类名
【讨论】: