iOS - UITableView内容中的行被截断

时间:2013-12-05 12:24:37

标签: ios iphone uitableview uilabel

我正在开发一个具有UITableview的iOS应用程序。 UITableview中的每一行都需要显示三个项目。

表中的数据作为JSON对象从Web服务器获取。一切都很好,我很高兴,除了我面临的两个问题。

问题1: 行中的第一个组件是Label,此标签不会完全显示数据。标签配置为多行(目前有7行)。但有时只有一个词出现在这个标签上。在这种情况下,在组件1的标签和组件2之间存在大量空白空间,组件2也是标签。如果我将此标签配置为单行,并且如果标签内容的长度更长,则此行显示如下

一只快速的棕色狐狸跳过......

句子被截断并以三个点结束。知道如何在不改变字体大小的情况下根据标签内容的长度动态调整此标签的高度,因此行大小[wrt table]也会发生变化。

问题2:这是关于行中的第三个组件。问题类似于问题1,但与ISSUE1相比本质上非常复杂。这也主要涉及截断。我为这个组件设计的模板如下所示

SD联系人姓名1 [SD联系人号码] - > SD联系人姓名2 [SD联系号码2]

其中SD是服务台FYI

实际上并非所有四个细节都可用。

如果服务已关闭,则只有SD联系人姓名1应如下所示

SD联系人姓名

但实际上我的情况如下所示

SD .. [] - > []

SD联系人姓名1被截断为SD ..并显示空括号。

如果服务已经打开且处于第二级,我需要此组件显示如下

SD联系人姓名1 - > SD联系人姓名2 [+34434344]。但我会在下面

SD .. [] - > SD .. [+ 33 ..]

再次,空括号和截断数据。

如何使括号和方形不可见。是否存在一种委托方法,OI可以根据某些条件使它们消失。

关于截断,我尝试了方法 adjustsFontSizeToFitWidth 但字体大小减少,我无法阅读句子或电话号码。 是否有一个很好的方法来处理这个问题。感谢您的支持。enter image description here

我已附上故事板供您参考。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

请覆盖委托方法 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { //get values to put in the cell using indexPath.row Int totalHeight =0; //calculate height of first label add it to totalHeight //calculate height of second label add it to totalHeight

return totalHeight; }

计算并返回行需要的高度

然后在

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

计算并设置每个标签的高度和宽度。

NSString *labelText=@"some text";
        [myLabel setText:labelText];
        UIFont *labelTextFont = [UIFont fontWithName:@"Helvetica" size:labelTextsize];
        CGSize labelFrameSize = [labelText sizeWithFont:labelTextFont];
    myLabel.frame = CGRectMake(xPos, yPos, labelFrameSize.width, labelFrameSize.height);