簡體   English   中英

出現視圖后應用iOS 8 / XCode 6自動布局約束

[英]iOS 8 / XCode 6 autolayout constraints applied after view appears

我有一個與XCode 5和iOS 7一起工作得很好的項目,但是當我最近下載XCode 6時,我注意到autolayout出現了一些奇怪的行為。

我有一個故事板,其視圖只有一個UIImageView和兩個UILabel。 使用UiPageViewController加載此視圖。 UIImageView在視圖中水平和垂直居中,並且存在約束,指定兩個標簽與圖像視圖的距離。 當故事板和自動布局值發生沖突時(例如,在故事板中,一個標簽在圖像視圖上方20個像素但自動布局顯示它應該在40像素以上),過去的自動布局值是在加載視圖之前成功應用。 因此,當視圖第一次顯示時,一切都在正確的位置。

現在使用iOS 8 / XCode 6,我看到視圖加載然后事情跳轉到他們的最終自動布局位置。 在模擬器和真實設備上,這種跳轉對於最終用戶來說是顯而易見的,而且它真的很煩人。 有沒有辦法回到過去的行為? 據我所知,沒有代碼更改導致此問題。

您的代碼在哪里更改了約束?

如果你將它保存在viewWillAppear中:你將遇到這個問題。 我發現viewDidLayoutSubviews適用於iOS8,但並不總是適用於iOS7。

最后,如果你不能使用viewDidLayoutSubviews ,我建議隱藏容器視圖在viewDidLoad中 ,並在viewWillAppear中取消隱藏它,只有在應用了約束之后。 加載屏幕時會給您帶來一點額外的延遲,但約束更改會對用戶透明。

我有類似的問題,並將項目放入容器視圖中以准備隱藏,然后按照其他答案中的建議顯示它們。

我不喜歡這個解決方案,最終沒有必要這樣做。

只需將它們放在與控制器視圖掛鈎的容器視圖中就可以解決問題。

對我來說,這是我項目中標簽欄的問題。 在那個視圖中我並不需要它,我把它隱藏起來。 因此,當視圖被推入堆棧時,條形圖被隱藏,約束條件也相應調整。 所以我只是把標簽欄放回去了。

暫無
暫無

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

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