2012-11-29 108 views
0

我在表视图单元格中有一个标签,其大小必须根据标签中的文本进行调整。在potratit模式下它可以正常工作,但是当转换到横向模式时,文本不会显示为表格单元格的长度。目前我已经动态地创建了标签,并通过重新加载表格来根据设备的当前方向调整其宽度。在uitableviewcell中调整文本的大小

我已经动态地创建了lable,并且将它添加到了contentView中。代码如下所示

UILabel *lblSize = [[UILabel alloc] initWithFrame:CGRectMake(nameLbl.frame.origin.x + nameLbl.frame.size.width , 0, 580, 60)]; 
lblSize.backgroundColor = [UIColor clearColor]; 
lblSize.font = [UIFont fontWithName:@"TrebuchetMS" size:18]; 
lblSize.textColor = [UIColor blackColor]; 
lblSize.minimumFontSize = 10; 
lblSize.tag = 3; 
[cell.contentView addSubview:lblSize]; 

什么,当我执行在纵向模式下的代码是发生以下

|第1页|一些文字。一些文字。一些文字。一些文字。一些文字.... |

在风景模式下会发生什么,下面是

| Page 1 |一些文字。一些文字。 .... |

我不想使用我用过的方法。是否还有其他更适合于解决问题的方法?请建议一些解决方案。我目前正在与iPad合作,并需要针对相同的解决方案。

+0

您是否在设置标签高度时遇到问题? – Atif

+0

请参阅下面的答案。您需要通过检查当前字体大小的文本大小来调整标签大小。 – Atif

回答

0

只是这种波纹管条件中设定的框架

if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) 
    { 
     // code for landscape orientation  
    } 

if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) 
    { 
     // code for Portrait orientation  
    } 
+0

我已经完成了你所建议的工作,并且工作正常。但我不想使用它,因为我不得不在每次旋转时调用表重新加载,我不想这样做。所以我正在寻找一些其他的工作 – Samuel

+0

然后你想要什么确切的家伙? –

+0

我已经将标签宽度设置为在纵向模式下正常工作的固定值。但是在横向模式下,视图宽度增加,单元格宽度也增加,但单元格内的文本仅占用标签的固定宽度。因此,如果不改变宽度,我希望标签中的文本应占用整个单元格宽度,而不管任何模式。 – Samuel

0

使用以下在方向改变您的cellForRowAtIndexPath

CGFloat maxHeightForLabel=1000.0; 
CGSize size=[label.text sizeWithFont:label.font 
     constrainedToSize:CGSizeMake(label.frame.size.width, maxHeightForLabel)]; 
CGRect frame=label.frame; 
frame.size=size; 
label.frame=frame; 

呼叫[yourTableView reloadData];

相关问题