我有一個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了「使用自動佈局」身份下檢查和類型...取消此解決我的問題。
希望這可以幫助其他類似情況的人。
感謝,
布蘭登
附:我只是自己回答這個問題,但我沒有代表,所以我必須等到明天回答它,或者您可以複製我擁有的,我會接受它。
哇,這讓我發瘋,我有一個按鈕有一個默認位置,但我在運行時將它設置爲'正確'的位置,但它不是第一次應用,只有第二次。例如:第一次:infoButton:{{541,504},{32,32}}→{{541,420.786},{32,32}},第二次:infoButton:{{541,504},{32 ,32}} - > {{541,420.786},{32,32}},第二次後,它停留在正確的座標,但我不明白爲什麼它被重置。我關閉了xib的自動佈局,然後工作!不知道發生了什麼... – mgrandi
這也幫助了我,非常感謝... – MiMo