自定义UITableView分隔符插件无法在带有故事板的iOS 8上运行.

前端之家收集整理的这篇文章主要介绍了自定义UITableView分隔符插件无法在带有故事板的iOS 8上运行.前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序的所有tableViews都不遵守storyBoard上的属性SeparatorInset- Custom – left = 0.它在iOS 7上运行良好,但现在不再适用了.

当我实现以下两种方法时:

  1. -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
  2. {
  3. // iOS 7
  4. if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
  5. [cell setSeparatorInset:UIEdgeInsetsZero];
  6. }
  7. // iOS 8
  8. if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
  9. [cell setLayoutMargins:UIEdgeInsetsZero];
  10. }
  11. }
  12.  
  13. -(void)viewDidLayoutSubviews
  14. {
  15. // iOS 7
  16. if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
  17. [self.tableView setSeparatorInset:UIEdgeInsetsZero];
  18. }
  19. // iOS 8
  20. if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
  21. [self.tableView setLayoutMargins:UIEdgeInsetsZero];
  22. }
  23. }

它工作正常,我只是不明白为什么我不能在故事板上设置这个更简单.

有什么想法吗?

解决方法

代码可能对您有所帮助.
包括layoutMargins和separatorInset,以支持iOS版本7,8
对于iOS8:

首先配置表视图,如下所示:

  1. if ([self.tableView respondsToSelector:@selector(layoutMargins)]) {
  2. self.tableView.layoutMargins = UIEdgeInsetsZero;
  3. }

然后在您的cellForRowAtIndexPath:方法中,按如下方式配置单元格:

  1. if ([cell respondsToSelector:@selector(layoutMargins)]) {
  2. cell.layoutMargins = UIEdgeInsetsZero;
  3. }

对于版本检查,您可以使用以下内容

  1. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
  2. if ([self respondsToSelector:@selector(setLayoutMargins:)]) {
  3. cell.layoutMargins = UIEdgeInsetsZero;
  4. }
  5. #endif

猜你在找的iOS相关文章