簡體   English   中英

使用autolayout為包含子視圖的視圖設置動畫

[英]Animate a view containing subviews with autolayout

這是設置:

  • 在Interface Builder上創建的UIView,鏈接到IBOutlet變量( _vAbout
  • 我們想要動畫的這個視圖的約束,鏈接到IBOutlet變量( _ctrBottomAboutView

我正在使用此代碼進行動畫處理:

_ctrBottomAboutView.constant = -100;
[UIView animateWithDuration:0.5 animations:^{
    [_vAbout layoutIfNeeded];
}

我的問題是: 只要視圖中有任何子視圖,動畫就不起作用 但是,如果視圖沒有子項,則動畫可以正常工作。

你知道解決方案嗎? 我已經嘗試了一切:添加和刪除約束而不是修改常量值,在Interface Builder上向子視圖添加約束...

經過一些空的項目從地面開始的一些實驗,這是我發現的:

鑒於我們希望動畫的視圖和B的超級視圖

  • 請記住,接收layoutIfNeeded消息的視圖是擁有約束的視圖,這一點非常重要。
  • NSLayoutAttributeWidthNSLayoutAttributeHeight的情況下,約束的所有者實際上是A,但在所有其他情況下,擁有約束的視圖是B

然而

  • 如果A沒有任何子視圖,我們可以隨時在我們的代碼上調用[A layoutIfNeeded] ,它會工作
  • 如果A有一個或多個子視圖,但我們在viewDidLoad上啟動動畫,我們可以調用[A layoutIfNeeded] ,它會工作

暫無
暫無

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

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