热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xcode7ios9UITableViewCell分隔符嵌套问题-Xcode7iOS9UITableViewCellSeparatorInsetissue

Thisisnotaquestion,ratherasolutiontotheproblemIfaced.这不是一个问题,而是我面临的问题的解决方案。InXcode7

This is not a question, rather a solution to the problem I faced.

这不是一个问题,而是我面临的问题的解决方案。

In Xcode 7, when the application is run on iOS 9 on iPad devices, the UITableView cells leave some margin onto the left side of the tableview. And rotating the device to landscape would increase the margins.

在Xcode 7中,当应用程序在iPad设备的iOS 9上运行时,UITableView单元格会在tableview的左侧留下一些空白。而将设备旋转到横向将增加边缘。

The solution I found is:

我找到的解决方法是:

Setting "cellLayoutMarginsFollowReadableWidth" to NO.

设置“cellLayoutMarginsFollowReadableWidth”没有。

self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;

Since, this property is only available in iOS 9. So, you will have to put a condition to check the iOS version, else it will crash.

因为这个属性只在ios9中可用。所以,你需要设置一个条件来检查iOS版本,否则它会崩溃。

if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_8_1)
{
    self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
}

Hope it is helpful to others.

希望它对别人有帮助。

4 个解决方案

#1


38  

Best Solution for iOS 9 and above

iOS 9及以上版本的最佳解决方案

This is because of a new feature called readable content guides. It provides margins that are suitable for reading. So, in iPhone and portrait iPad they are very small margins, but in landscape iPad they are bigger. In iOS 9, UITableView's cell margins default to following the readable content guide.

这是因为一种叫做可读内容指南的新特性。它提供适合阅读的边距。因此,在iPhone和竖屏iPad中,它们的利润率很小,但在横向iPad中,它们更大。在ios9中,UITableView的单元格页边值默认遵循可读内容指南。

If you want to stop that, just set the tableView's cellLayoutMarginsFollowReadableWidth to NO/false.

如果您想停止该操作,只需将tableView的celllayout边缘性页面宽度设置为NO/false。

Source: https://forums.developer.apple.com/thread/5496

来源:https://forums.developer.apple.com/thread/5496

#2


13  

Perfect Solution upto iOS 9

iOS 9的完美解决方案

In viewDidLoad

在viewDidLoad

Objective-C

objective - c

- (void)viewDidLoad {
    [super viewDidLoad];
    //Required for iOS 9
    if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
        self.testTableView.cellLayoutMarginsFollowReadableWidth = NO;
    }
}

Swift

斯威夫特

 override func viewDidLoad() {
    super.viewDidLoad()
    if #available(iOS 9.0, *) {
      tableViewDiet.cellLayoutMarginsFollowReadableWidth = false
    }
  }

In TableViewDelegate methods add following code:

在TableViewDelegate方法中添加以下代码:

Objective-C

objective - c

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    // Remove seperator inset
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    // Prevent the cell from inheriting the Table View's margin settings
    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        [cell setPreservesSuperviewLayoutMargins:NO];
    }

    // Explictly set your cell's layout margins
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

Swift

斯威夫特

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    // Remove seperator inset
    if cell.respondsToSelector(Selector("setSeparatorInset:")) {
      cell.separatorInset = UIEdgeInsetsZero
    }

    // Prevent the cell from inheriting the Table View's margin settings
    if cell.respondsToSelector(Selector("setPreservesSuperviewLayoutMargins:")) {
      cell.preservesSuperviewLayoutMargins = false
    }

    // Explictly set your cell's layout margins
    if cell.respondsToSelector(Selector("setLayoutMargins:")) {
      cell.layoutMargins = UIEdgeInsetsZero
    }
  }

#3


3  

A little bit late. I hope is helpful for someone else...

有点晚了。我希望对其他人有所帮助……

if #available(iOS 9.0, *) {
      myTableView.cellLayoutMarginsFollowReadableWidth = false
}

#4


0  

readableContentGuide is a layout guide that is already added to every UIView

readableContentGuide是一个布局指南,已经添加到每个UIView

This is to ensure the user doesn't have to turn his head to read the content.

这是为了确保用户不必转过头来阅读内容。

If you want to follow the readable content guide, then do following:

如果您想要遵循可读的内容指南,那么请执行以下操作:

let baseSection = UIView()

contentView.addSubview(baseSection)

baseSection.translatesAutoresizingMaskIntoCOnstraints= false

let insets = UIEdgeInsets(top: 4, left: 0, bottom: 4, right: 0)

baseSection.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor, constant: insets.left).isActive = true
baseSection.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor, constant: -insets.right).isActive = true
baseSection.topAnchor.constraint(equalTo: contentView.topAnchor, constant: insets.top).isActive = true
baseSection.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -insets.bottom).isActive = true

Note: In the code above the bottom and top anchors use the contentView instead of the readableContentGuide so that the content vertical margins changes based on the tableView.rowHeight.

注意:在底部和顶部的代码中,使用contentView而不是readableContentGuide,以使内容垂直的边距根据tableview而变化。


推荐阅读
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • Delphi 10.4.2 版本现已进入内测阶段,此次更新不仅增强了现有功能,还引入了多项新技术以提升用户体验。新版本将支持最新的MSIX应用打包格式,改善Windows 10应用商店的部署体验;同时,新增的VCL控件将带来更加现代的用户界面设计。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 近期遇到 M1 Mac Mini 在休眠状态下频繁自动重启的问题,通过日志分析尝试找出可能的原因。 ... [详细]
  • 在使用 iOS 应用时,遇到网络请求错误是常见的问题。本文将探讨两种常见的错误代码 -1003 和 -1001,并提供详细的解释和解决方案。 ... [详细]
  • 本文详细介绍了如何在iOS5中创建和理解简单的Hello World应用,包括Interface Builder的使用、Objective-C源代码文件的结构以及事件处理机制。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 苹果系统频繁弹窗提示无法验证服务器身份?竟是网易邮箱证书过期所致
    近日,众多苹果用户发现iOS、iPadOS和macOS系统频繁弹出无法验证服务器身份的警告。问题根源在于网易邮箱未能及时更新其数字证书,导致原证书过期后无法被信任。 ... [详细]
  • 深入理解TCP/IP协议中的MTU与MSS及以太网数据帧
    本文详细探讨了TCP/IP协议中MTU(最大传输单元)和MSS(最大分段大小)的概念及其在以太网数据帧中的应用。通过分析这些关键参数的工作机制,帮助读者更好地理解网络通信中的数据包处理过程。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
  • 本文将带您了解Cocos家族的不同版本和分支,特别是Cocos Creator的发展历程及其核心特性,帮助初学者快速入门。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 文章目录17、less17-UpdateQuery-Errorbased-String18、less18-HeaderInjection-ErrorBased-string19、l ... [详细]
author-avatar
平凡无琦世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有