Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何计算frame.size.width_Objective C_Ios_Uitableview_Uilabel - Fatal编程技术网

Objective c 如何计算frame.size.width

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

在我的例子中,计算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,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别担心,伙计。:)