Ios Swift以编程方式更改了故事板上的视图顺序

时间:2016-07-29 14:57:09

标签: ios swift xcode uiview storyboard

我在storyboard中添加了textView和imageView,如下面的屏幕截图所示。

故事板顺序为:

  • textView
  • imageView

现在正在运行imageView涵盖textView,分配给textView的内容不起作用。

所以我以编程方式想要将订单更改为:

  • imageView
  • textView

(不涉及故事板)

我试过了:

self.view.bringSubviewToFront(textView)

self.view.sendSubviewToBack(imageView)

imageView.layer.zPosition = 1
textView.layer.zPosition = 2

这些都不适合我

Story Board View order

1 个答案:

答案 0 :(得分:1)

我想问题是您可能在$(".lev1").click(function(){ if ($(this).next().is(":visible")) { $(this).nextUntil(".lev1").hide(); // works } else { $(this).nextAll(".lev2").show(); // works } }); 方法中使用这些代码。尝试在viewDidLoad

中使用

或者另一种尝试是使用viewDidAppear

performSelectorviewDidLoad

中写下此内容
viewWillAppear

并在此功能中更改您的订单

self.performSelector(#selector(changeOrder), withObject: nil, afterDelay: 0.2)

修改

我做了一个样本。看看。
https://github.com/RajanMaheshwari/OrderingLayer

我已经尝试过代码并且工作正常

func changeOrder() {
   imageView.layer.zPosition = 1
   textView.layer.zPosition = 2
}

我的故事板

enter image description here

运行代码后的最终结果

enter image description here

现在class ViewController: UIViewController { @IBOutlet weak var myImageView: UIImageView! @IBOutlet weak var myTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() self.performSelector(#selector(changeOrder), withObject: nil, afterDelay: 0.2) } func changeOrder() { myImageView.layer.zPosition = 1 myTextField.layer.zPosition = 2 } } 位于第1层,imageView位于第2层位置

如果您注释掉textField行,那么结果将是

enter image description here

此处performSelector位于第2层位置,imageView位于第1层位置。