翻转UIStackView中项目的位置

时间:2018-01-22 07:26:21

标签: swift uistackview

我有一个UIStackView,在Interface Builder中创建,包含两个视图。现在,我试图以编程方式改变这些观点的顺序(交换他们的立场,可以这么说)。

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

谢谢:)。

3 个答案:

答案 0 :(得分:3)

var url_create_listing = 'https://www.googleapis.com/androidpublisher/v2/applications/com.example.apps/edits?access_token='+tokens; request.post( url_create_listing, function (error, response, body) { var str_body = JSON.parse (body); var listing_id = str_body.id; var url_upload = 'https://www.googleapis.com/upload/androidpublisher/v2/applications/com.example.apps/edits/'+listing_id+'/apks?uploadType=media&access_token='+tokens; // request module is capable of auto detecting the Content-Type header // based on the file extension. var options = { url: url_upload }; fs.createReadStream('example_file.apk') .pipe(request.post(options, function optionalCallback(err, httpResponse, body){ if (err) { return console.error('upload failed:', err); } console.log('Upload successful! Server responded with:', body); })); 中创建一个包含2 UIViews的布局,如下所示:

layout

为您的UIStackView创建UIStackView的插座。致电UIViewController addArrangedSubview上的UIStackView来更改订单。请参阅下面的代码段。

viewDidLoad

这应该是结果:

enter image description here

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]) } } 获取给定视图并将其添加到arrangeSubviews数组的末尾。在我们的例子中,我们在索引[0]处获取红色视图,并将其添加到addArrangedSubview的结尾(右侧)。

答案 1 :(得分:1)

您可以使用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中的两个视图

答案 2 :(得分:0)

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