iOS 9 UITableView单元格的文本标签不是UITableView的全部宽度

自从更新到iOS 9后,iPad横版中的表格视图单元格不再在unit testing中拉伸整个表格宽度。

我的testing是一个简单的表格,在最后拍摄快照。

- (void)testTableSize{ UIViewController *viewController = [[UIViewController alloc] init]; UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0,viewController.view.bounds.size.width, viewController.view.bounds.size.height) style:UITableViewStylePlain]; tableView.dataSource = self; tableView.delegate = self; [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; [viewController.view addSubview:tableView]; ASCSnapshotVerifyViewiPad([viewController view]); } 

这个例子的单元格非常简单

 static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // Configure the cell... cell.textLabel.backgroundColor = [UIColor blueColor]; // Demo purpose cell.textLabel.backgroundColor = [UIColor yellowColor]; // Demo purpose cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", (int)indexPath.row]; return cell; 

但是我的手机在左右两边都有很大的空白。 任何想法为什么?

在这里输入图像说明

当我testing我的应用程序与iOS9,我注意到一些UITableViews,左右两个巨大的利润率。 经过一番调查,我发现了以下新的方法:

 // iOS9 if([self.tableView respondsToSelector:@selector(setCellLayoutMarginsFollowReadableWidth:)]) { self.tableView.cellLayoutMarginsFollowReadableWidth = NO; } 

当上面的代码被调用后,实例化你的UITableView,它应该删除它们。

在设置你的tableView委托后粘贴这段代码。

希望能帮助到你。

希望这对你有所帮助

  // MARK: - TableView Delegates And Datasource Method - func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { // IOS 7 if(self.respondsToSelector(Selector("setSeparatorInset:"))){ self.separatorInset = UIEdgeInsetsZero cell.separatorInset = UIEdgeInsetsZero tableView.separatorInset = UIEdgeInsetsZero; } // OTHER if(self.respondsToSelector(Selector("setPreservesSuperviewLayoutMargins:"))){ if #available(iOS 8.0, *) { self.separatorInset = UIEdgeInsetsZero cell.layoutMargins = UIEdgeInsetsZero; cell.preservesSuperviewLayoutMargins = false } } // iOS 8 if(self.respondsToSelector(Selector("setLayoutMargins:"))){ if #available(iOS 8.0, *) { self.separatorInset = UIEdgeInsetsZero cell.layoutMargins = UIEdgeInsetsZero } } // iOS 9 if (self.respondsToSelector("setCellLayoutMarginsFollowReadableWidth:")){ if #available(iOS 9.0, *) { self.cellLayoutMarginsFollowReadableWidth = false } } }