Ios Swift以编程方式更改情节提要上的视图顺序

Ios Swift以编程方式更改情节提要上的视图顺序,ios,swift,xcode,uiview,storyboard,Ios,Swift,Xcode,Uiview,Storyboard,我在故事板中添加了一个textView和一个imageView,如下面的屏幕截图所示 故事板顺序为: textView imageView 现在运行的imageView覆盖了textView,分配给textView的内容不起作用 因此我想通过编程将顺序更改为: imageView textView (不触摸故事板) 我试过: self.view.bringSubviewToFront(textView) self.view.sendSubviewToBack(imageView) 及

我在故事板中添加了一个textView和一个imageView,如下面的屏幕截图所示

故事板顺序为:

  • textView
  • imageView
现在运行的
imageView
覆盖了
textView
,分配给
textView
的内容不起作用

因此我想通过编程将顺序更改为:

  • imageView
  • textView
(不触摸故事板)

我试过:

self.view.bringSubviewToFront(textView)

self.view.sendSubviewToBack(imageView)

这些都不适合我


我想问题是您可能在
viewDidLoad
方法中使用了这些代码。尝试在
viewdide中使用

self.performSelector(#selector(changeOrder), withObject: nil, afterDelay: 0.2)
或者另一种尝试是使用
performSelector

viewDidLoad
viewwillbeen中写入此内容

self.performSelector(#selector(changeOrder), withObject: nil, afterDelay: 0.2)
并在此函数中写入您的订单更改

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

我做了一个样品。看看。


我已经试过了代码,它工作得很好

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
    }
}
我的故事板

运行代码后的最终结果

现在,
imageView
位于第1层,而
textField
位于第2层位置

如果注释掉
性能选择器
行,则结果将为


这里,
imageView
位于第2层位置,
textField
位于第1层位置。

您是否尝试隐藏imageView以检查textView是否位于正确的位置?是的,它位于正确的位置,我已经尝试了所有这些。如果我在故事板中更改顺序,它可以工作,但不能以编程方式执行。您可以指定在何处使用代码<代码>self.view.bringSubviewToFront(textView)self.view.sendSubviewToBack(imageView)
@ReinierMelian无论代码在哪里执行,它都必须将textView放在前面,对吗?对,但可能在执行代码时,此视图不存在@MohsenShakibaviewDidLoad或viewwillbeloen与此视图的viewDidLoad没有任何不同code@MohsenShakiba然后,您可以尝试查看是否出现。点未显示或将显示,点是在运行时调用的执行选择器dynamically@MohsenShakiba有关更多详细信息,请参见此。这对我很有用。@MohsenShakiba查看示例并阅读有关
performSelector
的更多信息。我再次提到github链接,它与加载或出现无关。它是关于使用performSelector进行动态运行时调用的