Objective c 如何计算frame.size.width
在我的例子中,计算UILabel frame.origin.x使其位于右侧,代码如下:Objective c 如何计算frame.size.width,objective-c,ios,uitableview,uilabel,Objective C,Ios,Uitableview,Uilabel,在我的例子中,计算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 wid
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,0,0,0
},这就是它在计算中无效的原因。我怀疑问题在于您最初没有设置标签的框架,因此默认情况下,它是{0,0,0,0
},这就是它在计算中无效的原因。因为writerNameLabel.frame.size.width的值当时为0。因为writerNameLabel.frame.size.width的值当时为0。如何初始化writerNameLabel?您应该使用initWithFrame,否则它的大小为(0,0)
信息:
我假设您使用的是UITableViewCell,因为变量的名称是cell:)
在这种情况下,最好使用cell.contentView.frame.size.width而不是cell.frame.size.width。因此,您可以防止与单元格的辅助视图重叠的writerNameLabel。最简单的方法是使用UITableViewCell实例上已经存在的标签(默认情况下)。如何初始化writerNameLabel?您应该使用initWithFrame,否则它的大小为(0,0) 信息: 我假设您使用的是UITableViewCell,因为变量的名称是cell:)
在这种情况下,最好使用cell.contentView.frame.size.width而不是cell.frame.size.width。因此,您可以防止与单元格的辅助视图重叠的writerNameLabel。最简单的方法是使用UtableViewCell实例上已经存在的标签。默认情况下,帧的默认值是{0,0,0}默认情况下,帧的默认值是{0,0,0,0}是否已经为标签设置了帧?如果没有,则默认为{0,0,0,0}。是否已经为标签设置了框架?如果不是,默认为{0,0,0,0}。很抱歉,我删除了这篇文章。我误解了OP的要求。@nspostwenidle别担心,伙计。:)很抱歉,我删除了这篇文章。我误解了OP的要求。@nspostwenidle别担心,伙计。:)