2014-02-24 68 views
0

我想改變我的自定義UITableViewCell內的UILabel的位置和大小,具體取決於某些條件是否正確。在我的自定義UITableViewCell的頭文件,我有一個UILabel宣佈爲:更改自定義UITableViewCell中的UILabel的位置和大小

@property (strong, nonatomic) IBOutlet UILabel *stepText; 

我想改變的位置UILabel的基於條件的大小。在保存我UITableView認爲我執行檢查這樣:

if(step.picture == nil){ 
    CGRect frame = cell.stepText.frame; 
    frame = CGRectMake(0, 0, 100, 100); 
    cell.stepText.frame = frame; 
} 

我已經使用了的NSLog是檢查裏面,我已經驗證它被執行時,曾經的條件爲真,但是,位置和大小我的自定義單元格中的標籤不會更改。

我在這做錯了什麼?

+0

你在哪裏進行支票? – bjtitus

+0

我在保存tableview的視圖中執行檢查,該視圖使用我的自定義tableviewcell,在調用tableview的每個單元格的-configurecell方法中。 – DominicanCoder

回答

2

在您更改任何內容後,您可能會嘗試-setNeedsLayout。這樣做,你的代碼的上述收益率的簡化版本:

if (step.picture == nil) { 
    cell.stepText.frame = CGRectMake(0, 0, 100, 100); 
    [cell setNeedsLayout]; 
} 

更重要的是,你可以把你的RE /上漿碼-layoutSubviews,並呼籲[cell setNeedsLayout]時有什麼變化。關於這兩種方法的關係,請參閱this SO answer或許多其他來源。

+0

嘿謝謝,但我還沒有定義一個setNeedsLayout方法,是一種方法,我必須定義或可以包括一個頭,這將允許我使用此方法? – DominicanCoder

+0

沒關係,我明白你的意思,讓我嘗試,我會更新每個人。再次感謝! – DominicanCoder

+0

這是'UIView'的內置方法,所以它可能更像'[cell setNeedsLayout]'。我已經糾正過了。 –

0

確保將自定義UILabel添加到cell.contentView。

如果你想自定義標籤的使用:
- 在文件的.h

@property (nonatomic, retain) IBOutlet UILabel *ttitle; 

-in文件的.m

self.ttitle = [[UILabel alloc] initWithFrame:CGRectMake(74,16,190,16)]; 
self.ttitle.textAlignment = NSTextAlignmentLeft; 
[self.ttitle setText: [NSString stringWithFormat: @"yourtext"]]; 
[cell.contentView addSubview:self.ttitle]; 

希望這有助於。

+1

這個問題不是關於定製UILabel。如果您有UIView並添加UILabel的子視圖,您可以隨時通過編程方式更改此標籤的位置或大小。當標籤位於UITableViewCell中時,同樣不成立。 – shebelaw

0

如果您使用create uitableviewcell和它的控制器插座來適當控制它並將其用作自定義tableview,那將會更好。

相關問題