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