2015-06-26 35 views
0

我有兩個UILabels和一個UIView在一個nib文件中。這個筆尖是我的collectionView的標題。在我的viewForSupplementaryElementOfKind:方法中,我需要更改這三個對象的框架。他們正在根據header.personCollege標籤的大小進行更改。重新加載UIView和UILabel幀

[header.personCollege sizeToFit]; 
CGRect boxFrame = header.boxView.frame; 
boxFrame.origin.x = header.personCollege.frame.origin.x + header.personCollege.frame.size.width + 11; 
header.boxView.frame = boxFrame; 

CGRect yearFrame = header.personYear.frame; 
yearFrame.origin.x = boxFrame.origin.x + boxFrame.size.width + 11; 
header.personYear.frame = yearFrame; 

[header.personYear setNeedsDisplay]; 
[header.personCollege setNeedsDisplay]; 
[header.boxView setNeedsDisplay]; 

問題是setNeedsDisplay不改變幀。只有在致電reloadData後才更改框架。我需要立即改變框架。我也使用autoLayout。

回答

3

由於您使用的是AutoLayout,因此您應該更改與視圖相關的約束的「常量」值,而不是直接更改其框架。

您可以先創建一個IBOutlets/IBOutletCollection來限制要更改的約束,然後使用這些IBoutlet更改其「常量」值。