我在viewDidLayoutSubviews下有代码,目的是使图像在开始时透明(alpha = 0),然后在viewDidAppear下逐渐淡入(变成alpha = 1)。另外,我有一个按钮,当按下它时会更改其自己的标签文本。

但是,当按下按钮并且标签改变时,图像(我在viewDidLayoutSubviews下指定的图像)也消失了。我认为是因为viewDidLayoutSubviews下的代码被调用了吗?

我的问题是:

1) viewDidLayoutSubviews是什么意思?为什么在按钮标签更改时调用它?简要/一般来说,setNeedsLayoutsetNeedsDisplayInRect是什么?

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
简而言之,如果您担心的是imageimageView的alpha值,那么viewDidLayoutSubviews可能不是正确的位置。 viewDidAppear似乎更适合于此。 viewDidAppear非常简单:当视图出现在屏幕上时,将被调用。

关于ios - swift :viewDidLayoutSubviews是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30591849/

10-10 08:15