在我的情况下,计算一个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
部分在我的计算中不起作用,它只返回
的值cell.frame.size.width - 80
,为什么?我做错了吗?
请指教。感谢。
答案 0 :(得分:3)
我怀疑问题是你最初没有设置标签的框架,因此默认情况下是{ 0, 0, 0, 0
},这就是它在计算中无效的原因。
答案 1 :(得分:1)
因为当时writerNameLabel.frame.size.width的值为0。
答案 2 :(得分:1)
默认情况下,帧的默认值为{0,0,0,0}
答案 3 :(得分:0)
如何初始化writerNameLabel?你应该使用initWithFrame,否则它有大小(0,0)。
只是信息:
我假设您使用的是UITableViewCell,因为您的变量名称是cell :) 在这种情况下,如果使用cell.contentView.frame.size.width而不是cell.frame.size.width会更好。因此,您可以防止重叠的writerNameLabel与单元格的附件视图。最简单的方法是使用标签,这些标签已经(默认情况下)在UITableViewCell实例上。