我正在以编程方式设置UITableView。我希望单元格的内容跨越整个屏幕宽度。我已成功将单元格设置为跨越屏幕宽度,但内容和分隔符仍然显着(下面的iPad屏幕截图)。
以下是我的视图控制器实现中的tableview布局设置:
- (void) viewDidLoad {
[super viewDidLoad];
// table layout
self.tableView.rowHeight = 192;
UILayoutGuide *margins = [self.view layoutMarginsGuide];
[self.tableView.leadingAnchor constraintEqualToAnchor:margins.leadingAnchor] ;
[self.tableView.trailingAnchor constraintEqualToAnchor:margins.trailingAnchor];
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
CGRect tableRect = self.view.frame;
self.tableView.frame = tableRect;
// table colors
self.tableView.backgroundColor = [UIColor grayColor];
self.tableView.separatorColor = [UIColor grayColor];
UIView *backView = [[UIView alloc] init];
[backView setBackgroundColor:[UIColor grayColor]];
[self.tableView setBackgroundView:backView];
}
然后我设置了单元格的内容:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor blueColor];
cell.indentationWidth = 0;
cell.indentationLevel = 0;
cell.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0);
cell.contentView.backgroundColor = [UIColor purpleColor];
return cell;
}
单元格背景为蓝色,横跨屏幕宽度。我的屏幕截图中的紫色区域是contentView,正如您所看到的,它不会延伸到屏幕的右边缘,并且单元格文本位于左侧。分隔符也在左右两侧插入。
答案 0 :(得分:4)
由于@technerd对我的问题的评论,我发现了这个问题。谢谢!
我在iOS 9.2上测试我的应用程序,但我忽略了新的iOS9 +单元格属性 cellLayoutMarginsFollowReadableWidth ,它默认调整单元格布局。
要关闭自动调整大小,您需要检查iOS版本,然后禁用该属性,如@technerd所示:
目标C
- (void)viewDidLoad {
[super viewDidLoad];
//For iOS 9 and Above
if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
self.tableView.cellLayoutMarginsFollowReadableWidth = NO;
}
}
<强>夫特强>
override func viewDidLoad() {
super.viewDidLoad()
//For iOS 9 and Above
if #available(iOS 9, *) {
tableView.cellLayoutMarginsFollowReadableWidth = false
}
}
希望这有助于其他人。
答案 1 :(得分:0)
上述解决方案实际上并不能完美运行。虽然,您现在要做的只是:
tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
这将使分隔符在表格视图的整个宽度上运行。