【问题标题】:Add multiple UIView’s indie a UIView添加多个 UIView 的独立一个 UIView
【发布时间】:2020-06-04 15:43:31
【问题描述】:

我需要创建一个有 3 个标签的视图,左中右。并以编程方式将此视图放置在我的 StoryBoard 中的 UIView 中。每次添加此视图时都会重复使用这些标签。

我在应用程序设计中使用故事板,但需要以编程方式执行此操作,因为我可能必须使用此视图 1 到 10 次,在每个页面上垂直堆叠并有 10 个页面。因此,创建 300 个级别的 100 个视图并隐藏/显示它们将花费很长时间。

对此最好的方法是什么?我曾想过使用 tableView,但在尝试创建一个只有 1 到 10 个单元格而不滚动并将其包含在该视图中的小表格时遇到了问题。

【问题讨论】:

    标签: ios swift uikit


    【解决方案1】:

    看起来堆栈视图可以满足您管理标签的需求。使用 @IBDesignable 创建一个 StackWithLabels 类型,以便能够以编程方式或从 Storyboard 添加堆栈视图。

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let stackWithLabels = StackWithLabels(frame: .init(origin: .zero, size: UIScreen.main.bounds.size))
            stackWithLabels.distribution = .fillEqually
    
            view.addSubview(stackWithLabels)
        }
    }
    
    @IBDesignable
    class StackWithLabels: UIStackView {
    
        override init(frame: CGRect) {
            super.init(frame: frame)
            commonInit()
        }
    
        required init(coder: NSCoder) {
            super.init(coder: coder)
            commonInit()
        }
    
        private func commonInit() {
            let label1 = UILabel(); label1.text = "Label 1"
            let label2 = UILabel(); label2.text = "Label 2"
            let label3 = UILabel(); label3.text = "Label 3"
    
            addArrangedSubview(label1)
            addArrangedSubview(label2)
            addArrangedSubview(label3)
            arrangedSubviews.forEach { ($0 as? UILabel)?.textAlignment = .center }
        }
    }
    

    【讨论】:

    • 我明白了,这是有道理的。你能告诉我如何以不同的标签在stackview中以编程方式添加其中的2个吗?所以第一个会有 Label1 Label2 Label3 和第二个 Test1 Test2 Test3?
    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多