Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 如何获取从UITableview边缘到UITableViewCell的填充_Objective C_Uitableview_Padding - Fatal编程技术网

Objective c 如何获取从UITableview边缘到UITableViewCell的填充

Objective c 如何获取从UITableview边缘到UITableViewCell的填充,objective-c,uitableview,padding,Objective C,Uitableview,Padding,在iPad上,分组样式的tableview的单元格比iPhone上的单元格插入得离tableview边缘更深 我需要检索从tableview边缘到单元格开始位置的左右距离。我指的是类似于“利润率”。我上下阅读了UITableview API,但找不到返回此内容的属性 我需要在计算中使用它来计算内容在单元格中的位置 提前谢谢! Alex我还没有测试过这一点,但我非常确定您应该能够选择两者的框架,然后从那里进行比较 CGRect cellFrame = yourCell.frame; CGRect

在iPad上,分组样式的tableview的单元格比iPhone上的单元格插入得离tableview边缘更深

我需要检索从tableview边缘到单元格开始位置的左右距离。我指的是类似于“利润率”。我上下阅读了UITableview API,但找不到返回此内容的属性

我需要在计算中使用它来计算内容在单元格中的位置

提前谢谢!
Alex

我还没有测试过这一点,但我非常确定您应该能够选择两者的框架,然后从那里进行比较

CGRect cellFrame = yourCell.frame;

CGRect tableFrame = yourUITableView.frame;
CGRect值为
(x坐标、y坐标、宽度、高度)

此外,您还可以使用以下方式打印出帧:

 NSLog(@"your cell frame is %@",NSStringFromCGRect(yourCell.frame);
 NSLog(@"your table frame is %@",NSStringFromCGRect(yourUITableView.frame);

我通过覆盖iPad的layoutSubviews调用并将分组视图边距设置为我想要的值,而不是明显隐藏的值来解决这个问题。堆栈中的其他答案指出,它的宽度可以从10到45像素不等

In your CustomTableViewCell class
- (void)layoutSubviews
{
    CGRect f = self.bounds;
    f = CGRectInset(f, 10, 0);
    self.contentView.frame = f;
    self.backgroundView.frame = f;
}

您可以强制它保持contentView和backgroundView等于TableCell的宽度,也就是TableView的宽度,但在这种情况下,我仍然希望我的分组视图插入一点。它还允许您更好地匹配自定义页眉/页脚视图,该视图将边对边地显示,而无需执行任何操作。

问题是:在调用tableView:willDisplayCell:forRowAtIndexPath:之前,框架将包含错误的值。调用cellForRowAtIndexPath时,单元格尚未按屏幕大小放大。因此,如果你在ipad上使用cell.frame.width,在带有iPhone情节提要的cellForRowAtIndexPath中,你会得到320。它应该是750+,但如果在willDisplayCell中执行cell.frame.width,则会得到正确的值。问题是,现在已经太晚了。到目前为止,我发现的一个解决办法是:首先检测设备是否是IPad。如果是,我在计算中加上40点作为适当的填充。绝对不是一个稳健的解决方案。