代码之家  ›  专栏  ›  技术社区  ›  ilikecode

在UIStackView中翻转项目的位置

  •  7
  • ilikecode  · 技术社区  · 7 年前

    我有一个 UIStackView ,创建于 Interface Builder 包含两个视图的。现在,我正试图通过编程更改这些视图的顺序(可以说,交换它们的位置)。

    有没有简单的解决方法 没有 使用Interface Builder完成此操作?

    谢谢:)。

    3 回复  |  直到 7 年前
        1
  •  15
  •   Hapeki    7 年前

    使用2创建布局 UIViews 在一个 UIStackView 像这样:

    layout

    为您的 UIStackView 到您的 UIViewController . 呼叫 addArrangedSubview 在您的 UIStackView 在里面 viewDidLoad 更改顺序。请参见下面的代码段。

    import UIKit
    
    class ViewController: UIViewController {
        @IBOutlet weak var stackView: UIStackView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // Switches order of the stackView
            stackView.addArrangedSubview(self.stackView.subviews[0])
        }
    }
    

    结果应该是:

    enter image description here

    这个 addArrangedSubview 获取给定视图并将其添加到arrangedSubviews数组的末尾。在本例中,我们在索引[0]处使用红色视图,并将其添加到 UIStackView .

        2
  •  12
  •   Jaydeep Vora    7 年前

    您可以更改视图 semantic UIStackView的 Unspecified Force Right-to-Left 交换嵌套视图的位置。

        3
  •  4
  •   Elmar Schoettner    7 年前

    您可以使用 addArragnedSubview 重新排列视图。 只需要addArragnedSubview,因为将视图添加到新父视图时,它将从旧父视图中删除。

        if self.viewsSwitched{
            stackview.addArrangedSubview(self.stackview.subviews[0])
            self.viewsSwitched = false
        }else{
            stackview.addArrangedSubview(self.stackview.subviews[1])
            self.viewsSwitched = true
    
        }
    

    此代码通过每次调用交换stackview中的两个视图