翻转 UIStackView 中项目的位置

Flipping the positions of items in a UIStackView

我在 Interface Builder 中创建了一个 UIStackView,其中包含两个视图。现在我正在尝试以编程方式更改这些视图的顺序(可以这么说,交换它们的位置)。

是否有一个简单的解决方法使用Interface Builder来完成这个?

谢谢 :).

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

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

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

    }

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

UIStackView 中创建一个包含 2 UIViews 的布局,如下所示:

为您的 UIStackViewUIViewController 创建一个出口。在 viewDidLoad 中对您的 UIStackView 调用 addArrangedSubview 以更改顺序。请参阅下面的代码段。

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])
    }
}

这应该是结果:

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

的末尾(右侧)