2013-03-31 58 views
5

我爲iOS6開發了一個應用程序。我在故事板中初始化動態單元格,其中包含一些UILabels和一些UIImageViews。它們的高度可能會隨時改變。我的問題是,當我改變這樣的cellForRowAtIndexPath框架:從Storyboard加載UILabel,無法更改cellForRowAtIndexPath中的框架

contentText = (UILabel *)[cell viewWithTag:TAG_TOPIC_CONTENT_TEXT]; 

CGFloat height = [[self.contentHeights objectAtIndex:[indexPath row]] floatValue]; 

contentText.frame = CGRectMake(CELL_TOPIC_CONTENT_X, CELL_TOPIC_CONTENT_Y, CELL_CONTENT_WIDTH, height); 

顯示在屏幕上contentText UILabel的高度仍然是一樣的我在故事板已經初始化。看來修改不起作用。如果我刷新我的UITableView contentText的高度將變得正確,如何解決問題?提前致謝!

+0

爲什麼不使用heightForRowAtIndexPath? –

+0

@Bhargavi在我的理解,這個功能是用來改變單元格的高度,但我的問題是改變高度的uilabel – Tate

回答

0

嘗試在tableView:willDisplayCell:forRowAtIndexPath:方法中執行此操作。這是通常用於UI自定義的方法。希望這可以幫助!

+0

只是試圖在tableView中設置contentText的框架:willDisplayCell:forRowAtIndexPath,然後檢索contentText uilabel in cellForRowAtIndexPath,並記錄框架是正確的,但仍然錯誤的位置顯示在屏幕上,我錯過了什麼? – Tate

+0

沒錯,這對這個問題沒有幫助。 – Legoless

0

如果需要修改任何細胞的框架,那麼您應該創建的UITableViewCell的子類,並實現layoutSubviews方法:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // modify frames here 
} 
+0

如果在運行時更改了大小,我該如何將它傳遞給layoutSubviews?或者有什麼方法可以通知layoutSubviews實際值? – Tate

+0

嘗試使用固定幀,似乎不在啓動時工作,幀將更改爲我期望刷新後的視頻 – Tate

0

我知道它的令人沮喪,但我還沒有找到一個解決方案那。 相反,我發現自己是一個解決方案,可以讓事情按照我期望的方式完成。

去掉了 「自動版式」(複選框在故事板)

然後:

[self.label setText:@"Labeltext"]; 
[self.label setBackgroundColor:[UIColor orangeColor]];// just to make the frame visible 
[self.label setNumberOfLines:0]; 
[self.label sizeToFit]; 

作品般的魅力,同時也:

self.label.frame = CGRectMake(0, 0, 50, 50); 

所以,如果你不不需要AutoLayout(對我來說,這是我第一次取消選中)擺脫它。

+0

如果自動佈局未選中,恐怕我無法適應不同的屏幕大小 – Tate

相關問題