在swift 2中的一个部分中添加单元格之间的空间
Posted
技术标签:
【中文标题】在swift 2中的一个部分中添加单元格之间的空间【英文标题】:Adding space between cells in a section in swift 2 【发布时间】:2016-01-05 09:32:52 【问题描述】:我需要在 swift 2.1 中添加填充,以便在每个部分的每个单元格之间添加空间
但我所做的只是为我不想要的部分添加标题。
如何在动态表格单元格之间添加空格?
添加标题的代码如下:
// Set the spacing between sections
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
return 10
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
let header = UIView()
header.backgroundColor = UIColor.clearColor()
return header
这里是创建表格视图的代码:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return self.tableData.count
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
//Table view cells are reused and should be dequeued using a cell identifier.
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
let rowData = self.tableData[indexPath.row]
cell.textLabel!.text = rowData.name
cell.textLabel!.textAlignment = .Right
if let url = NSURL(string: rowData.img),
data = NSData(contentsOfURL: url)
cell.imageView?.image = UIImage(data: data)
return cell
现在我的表格视图如下所示:
更新代码和表格视图:
【问题讨论】:
空间到底应该在哪里?在每个单元格之间? 你想增加两个单元格之间的空间? @ChikabuZ 我想在两个单元格之间添加空格 @MehulSojitra 是的,我需要在两个单元格之间添加空格 使用tableview的委托方法heightForRowAtIndexPath,它将返回单元格的高度。 【参考方案1】:表格视图中的单元格之间没有间距。仅在集合视图中。
可供您选择的选项是...
改为使用集合视图。让它看起来像一个表格视图相对容易。使用它,您可以使用项目间间距。
将单元格的高度增加 2 个像素,并在每个单元格的顶部或底部添加一个空白区域。这会产生在它们之间添加空间的错觉。
【讨论】:
感谢您的回答,但我怎样才能实现第二种方法? @anonymox 如果您目前的身高为 100。然后只需将其更改为 102。但请保持所有视图的原样。所以图像仍然会从 0(顶部)到 100(底部)。所以它的底部到单元格边缘的间隙为 2。 我已经按照你说的做了,只是单元格的高度变成了 102。所有的内容仍然彼此接近。请注意我的表格视图正在动态创建内容 @anonymox 是的,您可能正在使用 AutoLayout 创建单元格。您需要更新内容以在底部留出空隙,这样内容就不会仅仅增长以适应新的高度。 我已将单元格高度设置为 105,将内容高度设置为 40,但它们之间仍然没有空间。我可以使用部分而不是单元格来显示我的内容吗?【参考方案2】:您应该只设置单元格高度:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
return 100 //cell height
更新:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
if indexPath.row % 2 == 0
return 100 //cell height
else
return 5 //space heigh
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
//Table view cells are reused and should be dequeued using a cell identifier.
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
if indexPath.row % 2 == 0
let rowData = self.tableData[indexPath.row/2]
cell.textLabel!.text = rowData.name
cell.textLabel!.textAlignment = .Right
if let url = NSURL(string: rowData.img),
data = NSData(contentsOfURL: url)
cell.imageView?.image = UIImage(data: data)
else
cell.imageView?.image = nil
else
cell.textLabel!.text = nil
cell.imageView?.image = nil
return cell
【讨论】:
你的方法只是改变了单元格的高度!不要为它们添加填充! 谢谢。更新的方法有效。但是有一点问题,单元格之间的空间被文本填充!让它变得丑陋知道如何解决它吗?我已将新的表格视图屏幕截图放在上面的帖子中 你应该设置 cell.textLabel!.text = nil 和 cell.imageView?.image = nil 如果它是空间单元格。 你的意思是我把这两行放在 else 块中:cell.textLabel!.text = nil cell.imageView?.image = nil ...对不起,我还是 swift 的新手! 但这里的问题是我需要先写“ index let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)" 行以使单元格可读!这是不可能的。【参考方案3】:您可以使用 HeightForRowAtIndexPath 或更改大小检查器下 tableView Xib 中的“行高”...
或者您可以查看此链接以获取objective-c:https://***.com/a/14726457/4489420...在此它将根据您的数组计数创建部分...
【讨论】:
【参考方案4】:增加高度有两种方法
在情节提要中选择您的 tableview 并在 size inspector
中设置 rowHeight(更适合您实施)在你的 viewController 中添加这个函数
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
return 35;//Whatever height you want...
【讨论】:
感谢回复,但它对我不起作用。我需要像填充一样不改变单元格高度的东西!因为我的内容是动态生成的 在情节提要中执行此操作的一种方法,自动布局...为您的 imageView 的超级视图添加顶部和/或底部约束..【参考方案5】:如果您使用的是动态高度,请选中此项...https://www.facebook.com/iosApplicationDevelopers/posts/1297809426911662
【讨论】:
【参考方案6】:表格视图单元格在设计上是连续的:两个连续的单元格之间没有“空格”;只有 1 点粗的分隔线(你可以去掉)。
您可以在每个单元格内添加“填充”(= internal 空格)(即,使它们更高 - 请参阅其他答案),但是 您不能在它们之间添加“边距”(= external 空格)(这会在每个单元格之间给您两个分隔符,也许...?)。集合视图单元格,另一方面,确实允许单元格之间有额外的空间。
【讨论】:
感谢参与,但如何以编程方式向表格视图单元格添加填充? 像其他人提到的那样,使用heightForRowAtIndexPath()
并返回您想要的总高度(内容+填充)。以上是关于在swift 2中的一个部分中添加单元格之间的空间的主要内容,如果未能解决你的问题,请参考以下文章
向不同部分的单元格添加多个复选标记,并将其状态保存在Swift iOS中
Swift UIEdgeInsets 无法正常工作,如何在单元格之间添加间距?
在 calendarTableView 自定义单元格中添加视图破坏了代码 Swift 4