首页 > 解决方案 > 子视图未出现

问题描述

我正在快速学习,但在屏幕上显示多个子视图时遇到问题。当我创建两个堆栈视图并将它们添加到视图时self.view.addSubview(),只会显示最后一个创建的视图。我读过“这个方法在任何其他子视图之上添加一个视图”,问题来自于此吗?

这是我的代码:

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        let hello = UILabel()
        hello.text = "Hello"
        hello.layer.borderWidth = 1
        hello.textAlignment = NSTextAlignment.center
        
        let world = UILabel()
        world.text = "world"
        world.layer.borderWidth = 1
        world.textAlignment = NSTextAlignment.center
        
        let testArray = [hello, world]
        
        let stack = UIStackView()
        stack.addArrangedSubview(hello)
        stack.addArrangedSubview(world)
        stack.frame = CGRect(x: 5.0, y: 10.0, width: 100.0, height: 50.0)
        self.view.addSubview(stack)
        
        let stack2 = UIStackView()
        for e in testArray {
            stack2.addArrangedSubview(e)
        }
        stackForIn.frame = CGRect(x: 5.0, y: 100.0, width: 100.0, height: 50.0)
        self.view.addSubview(stackForIn)

不要关注我创建堆栈的方式,我目前只是在学习如何使用 UIStackView。

感谢您的帮助 !

标签: swift

解决方案


您可以使用此扩展来查看数组中 UIView 对象的子视图

extension UIView {
var allSubviews: [UIView] {
return self.subviews.reduce([UIView]()) { $0 + [$1] + $1.allSubviews }
    }
 }

希望这对您有所帮助:) 快乐编码


推荐阅读