簡體   English   中英

斯威夫特:viewDidLayoutSubviews是什么意思?

[英]Swift: What is the meaning of viewDidLayoutSubviews?

我在viewDidLayoutSubviews下有代碼,目的是使圖像在一開始就透明(alpha = 0),然后在viewDidAppear下逐漸淡入(變成alpha = 1)。 另外,我還有一個按鈕,當按下它時會更改其自己的標簽文本。

但是,當按下按鈕並且標簽改變時,圖像(我在viewDidLayoutSubviews下指定的圖像)也消失了。 我認為是因為viewDidLayoutSubviews下的代碼已被調用?

我的問題是:

1) viewDidLayoutSubviews是什么意思? 為什么在按鈕標簽更改時調用它? 簡而言之/一般來說, setNeedsLayoutsetNeedsDisplayInRect什么?

2)然后使用viewWillAppear更好嗎?

這是兩個類似的問題,但我對它們的理解不充分:

1) 當標簽更改(xcode)(swift)時調用viewDidLayoutSubviews

2) 為什么viewdidlayoutsubviews多次調用?

顧名思義,當viewController的視圖剛剛完成布局時,將調用viewDidLayoutSubviews ,並且您可以假定此時的視圖根據自動autolayout約束位於正確的位置/ frame 在調用該方法之前,假設您的view具有其最后一frame ,則不應執行任何操作:例如,如果嘗試在viewDidLoad aView setFrame:則它可能會失敗/無效,因為自動autolayout會在布局過程中更改其frame淘汰階段。 因此,如果您確實需要更改其框架,則應在viewDidLayoutSubviews中/之后調用setFrame:

簡而言之,如果您關心的是imageimageView alpha值,則viewDidLayoutSubviews可能不是正確的位置。 viewDidAppear似乎更適合於此。 viewDidAppear非常簡單:當視圖出現在屏幕上時,將調用它。

您是否嘗試過閱讀文檔? viewDidLayoutSubviewssetNeedsLayout等?

按鈕標簽更改->寬度更改->重新排列-> viewDidLayoutSubviews 您不應將viewDidLayoutSubviews視為單個調用事件。 您應該使用UIView.animateWithDurationviewDidAppear啟動圖像透明度動畫,這是一個很好的開始位置,因為所有內容UIView.animateWithDuration正確對齊。 在IB或init方法中,將圖像alpha設置為0,然后對其進行動畫處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM