我目前的问题是尝试为不同的iOS屏幕尺寸调整大小有限数量的单元格[3]。我目前的原型单元格为600x300,适用于任何尺寸类别的任何尺寸,并且适用于iPhone 6.然而,当我尝试去任何其他屏幕尺寸时,单元格太大而且你必须滚动[以下任何东西iPhone 6]或者不够大[iPhone 6 +,iPad等]
单元格中都有一个UIImageView,并在宽度上正确调整大小,但不在其高度。
我只是将一些模型照片放在表格单元格中,以便了解我的目标。我希望它能够滚动到我认为你将在TableViewController中实现以下行的地方:
tableView.scrollEnabled = false
答案 0 :(得分:1)
这是一段代码段。关于图片大小调整,您基本上有两个关于UIImageView
&#39> 模式的选项,请参阅下面的屏幕截图。在ImageTableViewCell
的xib中,您应该为Clip Subviews
检查UIImageView
(如果您选择 Aspect Fill 选项需要它)并设置Outlet {{在myImageView
中填写1}}。 ImageTableViewCell
只包含此出口,在其xib中将图像视图的前导和尾随空间约束设置为相对于superview的0(使其拉伸)。
的ViewController
ImageTableViewCell
Aspect Fit
Aspect Fill
答案 1 :(得分:1)
主要的必要步骤是确定单元格的宽高比(宽度除以高度)和单元格中的图像。
假设它们相等(假设长宽比为16:9),请按照以下步骤操作:
在order_ts
之后,根据宽高比计算行高,设置行高:
viewDidLoad
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(来自状态栏)=总工作空间
希望这有帮助,请评论任何进一步的指示。