我在 viewDidLayoutSubviews
下有代码,目的是在开始时使图像透明(alpha = 0),然后使用 viewDidAppear
下的代码慢慢淡入(进入 alpha = 1) >。另外,我有一个按钮,按下时会更改自己的标签文本。
但是,当按下按钮并且标签发生变化时,图像(我在 viewDidLayoutSubviews
下指定的图像)也会消失。我认为这是因为 viewDidLayoutSubviews
下的代码被调用了吗?
我的问题是:
1)viewDidLayoutSubviews
是什么意思?为什么在按钮标签更改时调用它?简单/概括地说,什么是 setNeedsLayout
和 setNeedsDisplayInRect
?
2) 那么使用 viewWillAppear 会更好吗?
这里有 2 个类似的问题,但我对它们的理解还不够:
1) viewDidLayoutSubviews is called when label changes (xcode) (swift)
最佳答案
顾名思义,viewDidLayoutSubviews
在您的 viewController
的 View 刚刚完成布局时被调用,您可以假设此时您的 View 处于正确的位置根据您的 autolayout
约束放置/frame
。假设您的 view
在该方法被调用之前有它们的最终 frame
,您不应该执行任何操作:例如,如果您尝试 aView setFrame:
在你的 viewDidLoad
它可能会失败/没有效果,因为 autolayout
在布局阶段改变了它的 frame
。因此,如果您确实需要更改其框架,则应在 viewDidLayoutSubviews
setFrame:
简而言之,如果您关心的是 image
或 imageView
的 alpha 值,viewDidLayoutSubviews
可能不是正确的地方。 viewDidAppear
似乎更适合这个。 viewDidAppear
非常简单:当 View 出现在屏幕上时,它会被调用。
关于ios - Swift:viewDidLayoutSubviews 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30591849/