【发布时间】:2014-07-21 14:26:16
【问题描述】:
我想在 iPad 上重用 iPhone 的 UITableView,方法是添加左右边距,从而使其居中。我尝试使用 .contentInset 属性,但它似乎并没有影响右边距。我错过了什么吗? (我尝试了一个否定的右插入右图,但也没有用。)
(您可以将Here is a gist with test code 放入 UITableViewController 子类中。)
// In a UITableViewController subclass
- (void)viewDidLoad {
[super viewDidLoad];
// the space I want on either side of the table
CGFloat xMargin = 100.0f;
// increase content inset and decrease content size an equal amount
UIEdgeInsets contentInset = self.tableView.contentInset;
contentInset.left = xMargin;
contentInset.right = xMargin;
CGSize contentSize = self.tableView.contentSize;
contentSize.width = contentSize.width -= xMargin * 2;
self.tableView.contentSize = contentSize;
self.tableView.contentInset = contentInset;
// Turning autolayout off doesn't appear to help
//self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
}
我不能只是缩短表格的宽度,否则右边距不会有正确的颜色或滚动表格以响应用户触摸。
【问题讨论】:
-
嗯,对于这样的事情,我首先要尝试的不是使用 UITableViewController,而是使用普通的 UIViewController 并将 UITableView 添加为子视图。您应该可以轻松地根据自己的喜好设置框架,而不会出现背景问题
-
@user2608440 我试过了。 (我使用 UITableViewController 来简化示例代码。)的确,我可以轻松设置 tableview 的框架,但这并不能解决我的问题 - 两侧的区域不会是 tableView 的一部分,因此不可滚动,正如我想要的屏幕截图所暗示的那样。
-
抱歉造成误会。创建一个自定义 UITableViewCell 来实现外观怎么样?它仍然可以跨越屏幕的整个宽度,但每个单元格都会有一个以它为中心的白色子视图,“边距”要么是透明的,要么是相同的灰色。
-
这可能行得通。不过,我真的希望避免使用自定义 UITableViewCell 子类。 (我想在整个应用程序中使用这种布局,并且我更喜欢使用现有的 UITableViewCell。)还有其他想法吗?
-
我唯一能想到的另一件事是在整个视图上使用手势识别器来映射到 tableView。但是走这条路似乎更复杂,以便在所有其他视图中重用。为了重用,我个人会使用普通的 UIViewControllers 并将使用自定义单元格的 UITableView 子类化。这样,您在每个 VC 上唯一需要做的就是将自定义 UITableView 添加为子视图并更改数据源。
标签: ios ipad uitableview