相关疑难解决方法(0)

如何在没有自定义单元格的情况下在UITableViewCell中包装文本

这是在iPhone 0S 2.0上.2.1的答案也很好,但我不知道有关表的任何差异.

感觉应该可以在不创建自定义单元格的情况下获取文本,因为默认情况下UITableViewCell包含a UILabel.我知道如果我创建一个自定义单元格,我可以使它工作,但这不是我想要实现的 - 我想了解为什么我当前的方法不起作用.

我已经发现标签是按需创建的(因为单元格支持文本和图像访问,所以它不会在必要时创建数据视图),所以如果我做这样的事情:

cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

然后我得到一个有效的标签,但设置numberOfLines(和lineBreakMode)不起作用 - 我仍然得到单行文本.UILabel文本中有足够的高度显示 - 我只是为高度返回一个较大的值heightForRowAtIndexPath.

cocoa-touch objective-c uikit iphone-sdk-2 ios

151
推荐指数
2
解决办法
10万
查看次数

计算UILabel/UITableViewCell的多行文本高度:计算与实际绘图时的结果不同

这里已经多次询问了这个一般性主题:如何使用不同数量的文本渲染UITableViewCells,从而改变高度.规范的答案是:使用sizeWithFont:constrainedToSize:lineBreakMode:在heightForRowAtIndexPath中计算表视图控制器委托中的高度.之后,单元格会被绘制出来,如果需要,你可以使用类似[label sizeToFit]的东西,而且所有工作都像魔法一样.

我的问题:我正在为一些单元格进行包装,因为sizeWithFont:从实际绘图返回不同的尺寸.

一个具体的例子:

文字是这样的:"人们忘记了@BillGates在1993年从NEC获得了性感的1/4英寸厚的板岩.本周发生的任何事情都不会与硬件有关!"

CGSize theSize = [text sizeWithFont:[UIFont systemFontOfSize:17.0f] constrainedToSize:CGSizeMake(310.0f, FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"calculated size for %@: %f, %f",text, theSize.width, theSize.height);
Run Code Online (Sandbox Code Playgroud)

返回:306.000000,84.000000.(即4行,17px字体和4px行间距,21px前导.)好.

但是,稍后实际绘制单元格时:

label = (UILabel *)[cell viewWithTag:3];
label.text = [NSString stringWithFormat:@"%@", text];
label.lineBreakMode = UILineBreakModeWordWrap;
label.font = [UIFont systemFontOfSize:17.0f];
CGSize labelSize;   
labelSize = label.frame.size;
NSLog(@"label size before resizing: %f, %f", labelSize.width, labelSize.height);
[label sizeToFit];
labelSize = label.frame.size;
NSLog(@"label size after resizing: %f, %f for text %@", labelSize.width, labelSize.height,text);
Run Code Online (Sandbox Code Playgroud)

(UILabel是从NIB加载的UITableViewCell的一部分.在IB中我将其设置为310px宽.)

这应该返回与上面完全相同的大小.相反,我得到281.000000,10500.000000作为sizeToFit调用后的尺寸.它现在是绘制时间的5行而不是4行,文本溢出,我看到UI中的溢出效应.

因此,对于同一文本,我计算了两个不同的维度,并且无法弄清楚.这是关于UILabel的吗?它有一些内在的边缘吗?对于某些文本而言,这种情况不断发生,而其他文本却没有发生,我没有将其追溯到字符串的特定内容; 似乎随意.本主题强调有两个处理过程:计算高度与实际绘图.这与我所看到的一致.但我不明白究竟发生了什么或如何解决它.

问题:为什么我看到两种不同的计算尺寸,我该如何解决?

iphone uitableview uilabel

39
推荐指数
3
解决办法
4万
查看次数