2011-04-27 71 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