2013-12-18 62 views
0

我有一個UICollectionView和一個UIView在底部的UIViewController。下面iOS查看擴展的方式不是我想要的

enter image description here

黃色廣場是UICollectionView,紅色是的UIView我把它放在一起的方式顯示在圖像中。這工作得很好。但是現在我想調整UIView的大小,因爲它有時包含更多的信息並且需要更大。所以我試過這個:

[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height + 10)]; 

但是這擴大UIView在底部,它是不可見的。我想這是因爲我沒有正確的約束?我也嘗試用相同的數量減去origin.y,這隻有在UICollectionView不會被新的高度調整大小。那麼我該如何解決這個問題呢?

回答

2

如果您使用自動佈局,您不應該從您的代碼設置框架。相反,您應該修改導致視圖大小不正確的約束的constant。你可以擁有一個IBOutlet來達到這個限制,你可以改變它的constant屬性。然後在視圖控制器的視圖上調用setNeedsLayout

+0

這是我想的方法。但是我無法將約束連接到uiview,或者我應該將它連接到ViewController? – Haagenti

+0

將它連接到ViewController,並從那裏改變它。您還可以在需要調整大小時重新創建代碼中的所有約束,但另一種解決方案速度更快,需要的代碼更少 – Levi

+0

謝謝,完成;) – Haagenti

0

當在故事板或xib文件中設置約束時,動畫會根據約束而不是大小和位置執行動畫。

首先在您的視圖控制器的頭文件中創建一個約束的出口引用,該引用將改變(在您的情況下,您的UIView頂部空間到頂部佈局指南)。

當您想爲視圖設置動畫時,您現在必須更新其約束並要求佈置視圖。
例如:

[UIView animateWithDuration:0.2 
         animations:^{ 
          viewYConstraint.constant -= 44; 
          [self.view layoutIfNeeded]; 
         } 
] 
//Now don't forget to update constraints 
[self.view updateConstraints]; 
相關問題