使UITableViewCell调整大小以适应不同的屏幕大小

时间:2016-03-29 01:11:33

标签: ios uitableview

我目前的问题是尝试为不同的iOS屏幕尺寸调整大小有限数量的单元格[3]。我目前的原型单元格为600x300,适用于任何尺寸类别的任何尺寸,并且适用于iPhone 6.然而,当我尝试去任何其他屏幕尺寸时,单元格太大而且你必须滚动[以下任何东西iPhone 6]或者不够大[iPhone 6 +,iPad等]

单元格中都有一个UIImageView,并在宽度上正确调整大小,但不在其高度。

我只是将一些模型照片放在表格单元格中,以便了解我的目标。我希望它能够滚动到我认为你将在TableViewController中实现以下行的地方:

tableView.scrollEnabled = false

3 个答案:

答案 0 :(得分:1)

这是一段代码段。关于图片大小调整,您基本上有两个关于UIImageView&#39> 模式的选项,请参阅下面的屏幕截图。在ImageTableViewCell的xib中,您应该为Clip Subviews检查UIImageView(如果您选择 Aspect Fill 选项需要它)并设置Outlet {{在myImageView中填写1}}。 ImageTableViewCell只包含此出口,在其xib中将图像视图的前导和尾随空间约束设置为相对于superview的0(使其拉伸)。

的ViewController

ImageTableViewCell

Aspect Fit

fit

Aspect Fill

fill

答案 1 :(得分:1)

主要的必要步骤是确定单元格的宽高比(宽度除以高度)和单元格中的图像。

假设它们相等(假设长宽比为16:9),请按照以下步骤操作:

  1. order_ts之后,根据宽高比计算行高,设置行高:

    viewDidLoad
  2. 在原型单元格中,添加 let screenWidth = CGRectGetWidth(UIScreen.mainScreen().bounds) let height = screenWidth * 9 / 16 self.tableView.rowHeight = height 。让它具有最大宽度(contentView = 0的前导和尾随空格),并将宽高比约束设置为16:9(它不能有任何其他高度约束)。

答案 2 :(得分:1)

我最终在@ schmidt9和@VinodVishwanath的帖子的帮助下搞清楚这一点。为了正确计算您想要内容的屏幕大小,您必须减去导航栏的空间以及状态栏(时间,电池等)。以下行可以执行此操作:< / p>

要查找导航栏的大小:

self.navigationController!.navigationBar.frame.size.height

要查找整个屏幕的大小,包括导航栏和状态菜单:

UIScreen.mainScreen().fixedCoordinateSpace.bounds.height

所有设备的状态栏始终为20,因此您只需将其减去即可。你终于得到了这段代码:

let screenHeight = UIScreen.mainScreen().fixedCoordinateSpace.bounds.height - self.navigationController!.navigationBar.frame.size.height - 20
    self.tableView.rowHeight = screenHeight / 3

把它放在更多的数学方程式中: 总屏幕 - 导航栏 - 20(来自状态栏)=总工作空间

希望这有帮助,请评论任何进一步的指示。