2011-04-27 73 views
1

我的代碼:的UILabel不會改變

- (void)viewDidLoad 
{ 
NSString *text = @"fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfafjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfass" 
       "fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfas" 
       "fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfas"; 

myLabel = [self getTheHeight:text NameofFont:FONT_NAME fontSize:FONT_SIZE LineMode:UILineBreakModeWordWrap]; 
[super viewDidLoad]; 
} 

- (UILabel *)getTheHeight:(NSString *)text NameofFont:(NSString *)font_name fontSize:(float)font_size LineMode:(UILineBreakMode)lineBreakMode 
{ 
CGSize size = [text sizeWithFont:[UIFont fontWithName:FONT_NAME size:FONT_SIZE]]; 

UILabel *temp = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, size.height)]; 
[temp setFont:[UIFont fontWithName:FONT_NAME size:FONT_SIZE]]; 
[temp setLineBreakMode:UILineBreakModeWordWrap]; 
[temp setNumberOfLines:0]; 
temp.text = text; 

return temp; 
} 

我有一個返回格式化標籤的方法。 myLabel通過IB推出。問題是返回標籤不影響myLabel。

代碼有什麼問題? myLabel不會更改文本,框架等。

回答

1

試試這個,

通過你的mylabel的功能像...

- (void)viewDidLoad 
{ 
NSString *text = @"fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfafjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfass" 
       "fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfas" 
       "fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfas"; 

[self getTheHeight:text NameofFont:FONT_NAME fontSize:FONT_SIZE LineMode:UILineBreakModeWordWrap withLabel:myLabel]; 
[super viewDidLoad]; 
} 

- (void)getTheHeight:(NSString *)text NameofFont:(NSString *)font_name fontSize:(float)font_size LineMode:(UILineBreakMode)lineBreakMode withLabel:(UILabel*)temp 
{ 
CGSize size = [text sizeWithFont:[UIFont fontWithName:FONT_NAME size:FONT_SIZE]]; 

temp.frame = CGRectMake(0, 0, 320, size.height); 
[temp setFont:[UIFont fontWithName:FONT_NAME size:FONT_SIZE]]; 
[temp setLineBreakMode:UILineBreakModeWordWrap]; 
[temp setNumberOfLines:1]; 
temp.text = text; 
} 
+0

它給出了錯誤:錯誤:'temp'重新宣佈爲不同種類的符號 – Maulik 2011-04-27 06:15:23

+0

Maulik,現在試試吧。 – 2011-04-27 06:18:31

+0

標籤現在不可見... – Maulik 2011-04-27 06:40:29

0

您尚未修改myLabel的屬性。這就是問題。

此問題的解決方案是:將mylabel作爲參數傳遞給函數,並使用該引用修改屬性,並讓該函數不返回任何內容。

+0

你可以給SOM示例代碼... – Maulik 2011-04-27 06:39:59

+0

@Maulik什麼阿赫亞Bhalara給了是正確的 – KingofBliss 2011-04-27 09:11:51

+0

確定,但如果我想返回UILabel,該怎麼辦?爲什麼它不起作用? – Maulik 2011-04-27 10:39:42

0

我覺得基本問題是根據文字設置標籤的高度。 試試這個代碼: -

它更簡單,你不需要寫一些額外的方法

CGSize labelsize; 
    UILabel *commentsTextLabel = [[UILabel alloc] init];; 
    [commentsTextLabel setNumberOfLines:0]; 
    [commentsTextLabel setBackgroundColor:[UIColor clearColor]]; 
    NSString *text = @"fjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfafjkldsjfkladsjfkljsdaklfjadsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfassfjkldsjfkladsjfkljsdakljadsklfjdskjfdskjflkdsahfahf dkdfdsfasdfasdfasfjkldsjfkladsjfkljsdakladsklfjdskjfdskjflkdsahfahfdkdfdsfasdfasdfas"; 

    [commentsTextLabel setFont:[UIFont fontWithName:@"Helvetica"size:14]]; 
    labelsize=[text sizeWithFont:commentsTextLabel.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap]; 
    commentsTextLabel.frame=CGRectMake(10, 24, 268, labelsize.height); 
    [commentsTextLabel release]; 

設定自己的constraintTosize和幀x和y cordinate。

+0

感謝您的回覆...如果我寫[self.view addSubview temp];進入自定義方法比它顯示標籤預期...但返回它不會生效......我必須寫一個方法,因爲我有很多標籤... – Maulik 2011-04-27 06:11:30

+0

你不需要寫,我已經把這個代碼在我的tableviewcellforrow方法中,爲什麼我加了。 – Gypsa 2011-04-27 06:13:57