Ios Swift以编程方式更改情节提要上的视图顺序
我在故事板中添加了一个textView和一个imageView,如下面的屏幕截图所示 故事板顺序为: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
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进行动态运行时调用的