如何在列表项周围创建带有圆角的 table 视图

How to create table view with rounded corners around the list items

我正在尝试重新创建一个类似于 iOS 13 健康应用程序详细视图中的菜单。请参考标记的屏幕截图。

我知道这可以通过 table 视图来完成。有一个部分标题和列表项。但我想要实现的是类似于屏幕截图中显示的外观,其中列表项(不包括部分标题)有背景颜色,列表顶部和底部有圆角。

任何人都可以告诉我如何使用 table 视图实现此目的吗?或者指出我正确的方向?我已经知道如何设置 table 视图并以编程方式添加详细信息。我只需要有关如何实现如下所示样式的帮助。

谢谢!

做起来并不复杂。这是可以完成该样式的多种方式之一。

一个。您可以使用分组的 tableView,如屏幕截图中所示。

b。提供部分标题,或者更好的是,提供部分视图(以进行更多自定义!)。

c。对于每个部分,您有一个 tableViewCell。

d。对于 c. 的每个单元格,您将拥有一个 tableView。

e。对于 d. 的每个 tableView,您当然会有一个新单元格(项目单元格)。

f。如何计算 e. 的 tableView 的高度?有多种方法。

  • 提供静态高度(如果您的项目数量是静态的)。
  • 如果是动态计数,但是每个单元格的高度是恒定的,那么你可以这样计算:itemsCount * heightConstantOfCell

  • 如果你再次有rows/items的动态计数,并且你有每个单元格的恒定高度或每个单元格的动态高度,那么你可以观察整个tableView的框架键.

克。最后,只需在 d..

中为 tableView 的每个容器视图添加一些圆角半径

请注意,此屏幕截图仅显示项目 g.。它只是 tableView 的每个容器视图在 tableViewCell 中的一个角半径,它是主 tableView 的一个单元格。


另一种方法是使用 UICollectionView,但比我讨论的要复杂一些 - 至少对我来说是这样。

所以,我想通了。为了让陷入同样困境的开发者受益,我在这里发布了我的解决方案。但我会将上面格伦的回答标记为正确答案,因为它引导我找到解决方案。再次感谢格伦!

看来我不需要对我的代码做任何特殊的事情。我刚刚发现在 XCode 11 和 iOS 13 上,有一个名为 "Inset Grouped" 的新 table 视图样式。您可以从 IB 或通过代码设置此 属性。

通过快速实验,我得出了如下屏幕截图所示的结果。