我一直在关注苹果制作的官方iOS开发教程(located here)。它是一个新的教程,创建于12月16日,所以我还没有能够找到这个问题的任何答案。以下是我坚持的部分:
进一步探索
在编辑模式下,评级控制扩展到删除 按钮。这是因为单元格的布局不是使用Auto设计的 布局。控件适合正常分配的空间,但控件 当空间减少时,它不会适应。
要解决此问题,您需要使用嵌套堆栈视图布局单元格 自动布局限制;然而,这仍然是一个练习 阅读器。
有关详细信息,请参阅Auto Layout Guide。
我所做的每一次尝试都会压缩右侧(第5次开始)或左侧(食物图片)。
我有两个关键问题:
按下编辑按钮与删除按钮时的父视图是什么。通过我(有限的)理解,似乎左侧与右侧的行为不同。
低头的正确方向是什么?我最接近的解决方案如下:标签和评级系统的一个堆栈视图。然后是一个额外的堆栈视图,包含上面提到的和图片。
如果有人想修补它,可以在页面底部下载源代码。
感谢您的时间。
答案 0 :(得分:1)
就个人而言,我倾向于让星星缩小,所以如果你的空间不足,他们会适当调整大小。
不幸的是,要做到这一点,你必须调整一些代码。特别是,您可能需要调整RatingControl
,以便星星优雅地调整大小。目前的实施强制其规模:
button.heightAnchor.constraint(equalToConstant: starSize.height).isActive = true
button.widthAnchor.constraint(equalToConstant: starSize.width).isActive = true
我建议更改它以使尺寸为最大值"并且仅确保宽度与高度的比率不变。
button.heightAnchor.constraint(lessThanOrEqualToConstant: starSize.height).isActive = true
button.widthAnchor.constraint(lessThanOrEqualToConstant: starSize.width).isActive = true
button.widthAnchor.constraint(equalTo: button.heightAnchor).isActive = true
或者,就个人而言,我认为等效的activate
语法更清晰:
NSLayoutConstraint.activate([
button.heightAnchor.constraint(lessThanOrEqualToConstant: starSize.height),
button.widthAnchor.constraint(lessThanOrEqualToConstant: starSize.width),
button.widthAnchor.constraint(equalTo: button.heightAnchor)
])
您可能还应该使按钮大小相同(所以我只是将上述约束添加到第一个按钮,然后使所有其他按钮的约束与第一个按钮的大小和宽度相同)。
然后,如果您向要调整评级控件大小的单元格添加适当的约束,则将正常调整评级控件的大小。
或者您可以使用堆栈视图:
RatingControl
添加到一个垂直堆栈视图; 就个人而言,我不认为堆栈视图方法比添加适当的约束要容易得多,但两种方法都可以正常工作。有时堆叠视图会让生活变得更加轻松,但我认为在这种情况下它是一种清洗。你的选择。
你问:
按下编辑按钮与删除按钮时的父视图是什么?
图像视图的父视图,评级控件和标签是单元格"内容视图"。无论单元格是否处于编辑模式,这都是内容视图。这是内容视图的目的,因此当单元格进入或退出编辑模式时,整体视图层次结构不必更改。如果您对任何给定点的视图层次结构有疑问,您可以随时在调试器中暂停执行并使用视图调试器按钮:
在那里,您可以看到视图层次结构中的UITableViewCellContentView
是相同的,无论该单元格是否处于编辑模式。