2012-09-24 36 views
2

我有一個tableViewHeader UIView包含幾個動態元素(具有不同尺寸的UILabels是確切的)。我在IB中設置了UIView,把所有東西都連接起來了,並且試圖在sizeToFit之後根據我的標籤大小來改變幀的起源。tableViewHeader子視圖setFrame不工作

如果我在setFrame調用後記錄新的幀,它確實會顯示更新的原點,但它們不會顯示在模擬器上。標籤更改高度,但起源不會更改。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
CGRect frame; 
CGFloat baseOffset = titleLbl.frame.origin.y; 
offset = titleLbl.frame.size.height; 
self.titleLbl.text = destObject.title; 
self.titleLbl.font = [UIFont fontWithName:@"Avenir-Heavy" size:22]; 
[self.titleLbl sizeToFit]; 
frame = titleLbl.frame; 
frame.origin.y = baseOffset; 
//Get any change in size from the label 
offset = titleLbl.frame.size.height - offset; 

frame = imageView.frame; 
frame.origin.y = frame.origin.y + offset; 
self.imageView.frame = frame; 

frame = photosBtn.frame; 
frame.origin.y = frame.origin.y + offset; 
[self.photosBtn setFrame:frame]; 

frame = detailLbl.frame; 
frame.origin.y = frame.origin.y + offset; 
self.detailLbl.frame = frame; 
baseOffset = self.detailLbl.frame.origin.y; 
CGFloat detailOffset = self.detailLbl.frame.size.height; 
self.detailLbl.text = destObject.description; 
[self.detailLbl sizeToFit]; 
frame = detailLbl.frame; 
frame.origin.y = baseOffset; 
self.detailLbl.frame = frame; 
detailOffset = self.detailLbl.frame.size.height - detailOffset; 
offset = offset + detailOffset; 

frame = blueLine.frame; 
frame.origin.y = frame.origin.y + offset; 
self.blueLine.frame = frame; 

self.whereToDiveLbl.font = [UIFont fontWithName:@"Avenir-Heavy" size:22]; 
frame = whereToDiveLbl.frame; 
frame.origin.y = frame.origin.y + offset; 
self.whereToDiveLbl.frame = frame; 

frame = grayLine.frame; 
frame.origin.y = frame.origin.y + offset; 
self.grayLine.frame = frame; 

frame = CGRectMake(headerView.frame.origin.x, headerView.frame.origin.y, headerView.frame.size.width, grayLine.frame.size.height + grayLine.frame.origin.y + 5); 
self.headerView.frame = frame; 
} 

我試過尋找類似的問題,但找不到任何。任何人都可以對此有所瞭解嗎?

我應該指出UIView本身(也就是這個例子中的headerView)反映了它在模擬器上對其框架的改變,但是它的子視圖沒有。如果它有任何區別,我已啓用autoresize子視圖,但啓用或禁用了相同的結果。

編輯

我發現我在IB的UIView了「使用自動佈局」身份下檢查和類型...取消此解決我的問題。

希望這可以幫助其他類似情況的人。

感謝,

布蘭登

附:我只是自己回答這個問題,但我沒有代表,所以我必須等到明天回答它,或者您可以複製我擁有的,我會接受它。

回答

7

我發現我在IB的UIView有'使用Autolayout'在身份和類型下檢查...取消選擇這個解決了我的問題。

希望這可以幫助其他類似情況的人。

+1

哇,這讓我發瘋,我有一個按鈕有一個默認位置,但我在運行時將它設置爲'正確'的位置,但它不是第一次應用,只有第二次。例如:第一次:infoButton:{{541,504},{32,32}}→{{541,420.786},{32,32}},第二次:infoButton:{{541,504},{32 ,32}} - > {{541,420.786},{32,32}},第二次後,它停留在正確的座標,但我不明白爲什麼它被重置。我關閉了xib的自動佈局,然後工作!不知道發生了什麼... – mgrandi

+0

這也幫助了我,非常感謝... – MiMo