1

在我的例子中,计算一个 UILabel frame.origin.x 使其位于右侧,代码如下:

writerNameLabel.frame = CGRectMake(cell.frame.size.width - writerNameLabel.frame.size.width - 80.......)

NSLog(@" writerNameLabel frame width: %f",writerNameLabel.frame.size.width);
NSLog(@" cell frame width: %f",cell.frame.size.width);
NSLog(@" cell - writerNameLabel frame width: %f",cell.frame.size.width - writerNameLabel.frame.size.width);
NSLog(@" writerNameLabel frame x: %f",writerNameLabel.frame.origin.x);


2012-08-17 14:43:36.895 writerNameLabel frame width: 38.000000
2012-08-17 14:43:36.899 cell frame width: 320.000000
2012-08-17 14:43:36.902 cell - writerNameLabel frame width: 282.000000
2012-08-17 14:43:36.904 writerNameLabel frame x: 240.000000

----

2012-08-17 14:43:36.924 writerNameLabel frame width: 102.000000
2012-08-17 14:43:36.928 cell frame width: 320.000000
2012-08-17 14:43:36.931 cell - writerNameLabel frame width: 218.000000
2012-08-17 14:43:36.934 writerNameLabel frame x: 240.000000

问题是这

cell.frame.size.width - writerNameLabel.frame.size.width

我的计算中的一部分不起作用,它只返回值

单元格.frame.size.width - 80

, 为什么?我做错什么了吗?

请指教。谢谢。

4

4 回答 4

3

我怀疑问题是您最初没有设置标签的框架,因此默认情况下它是{ 0, 0, 0, 0},这就是它在计算中无效的原因。

于 2012-08-17T07:00:09.037 回答
1

因为当时 writerNameLabel.frame.size.width 的值是 0。

于 2012-08-17T07:00:12.593 回答
1

框架的默认值为 {0, 0, 0, 0}

于 2013-03-28T09:18:15.110 回答
0

你如何初始化 writerNameLabel?您应该使用 initWithFrame,否则它的大小为 (0,0)。

只是信息:

我假设您使用的是 UITableViewCell,因为您的变量名称是 cell :) 在这种情况下,最好使用 cell.contentView.frame.size.width 而不是 cell.frame.size.width。因此,您可以防止 writerNameLabel 与单元格的附件视图重叠。最简单的方法是使用标签,这些标签已经(默认情况下)在 UITableViewCell 实例上。

于 2012-08-17T07:27:26.400 回答