我使用本教程在 iOS 项目中创建了自定义范围 slider :https://www.raywenderlich.com/7595-how-to-make-a-custom-control-tutorial-a-reusable-slider
使用 Xcode 10.1 和 Swift 4.2.1。
唯一的区别是,我删除了 viewDidLayoutSubviews()
部分原因是我已经在 Storyboard 中完成了。在这里,我在 Storyboard中放置了一个 UIView,设置了它的约束,将它的类设置为 RangeSlider
并创建了一个 @IBOutlet weak var rangeSlider: RangeSlider!
在 View Controller 中。
我使用的是静态表格 View ,但单元格高度是动态的:
override func viewDidLoad() {
...
self.tableView.rowHeight = UITableView.automaticDimension
self.tableView.estimatedRowHeight = 80.0
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
如果我更改字体大小,单元格高度将得到调整,这正是我想要的,但不知何故,带有 rangeSlider 的单元格覆盖了 rangeSlider 的一半。无论我调整字体大小、旋转屏幕等都没有关系。它总是被覆盖。
有人可以帮忙吗?我错过了什么吗?
最佳答案
要使自动尺寸起作用,您必须有一个从 contentView
顶部到底部的完整约束链,并且该链中的每个项目都需要有一个明确的高度或一个 intrinsicContentSize。
从教程中我可以看出他们没有定义 intrinsicContentSize对于自定义 slider 。 UIKit 提供具有 intrinsicContentSize 的控件如果您不以其他方式约束它们,则宽度和高度约束等于它们的 intrinsicContentSize。因此 1) 实现 intrinsicContentSize
或 2) 手动添加固定高度约束 IN ADDTION TO tableViewCell 的内容 View 的顶部和底部约束。
关于ios - 表格 View 中隐藏的自定义范围 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55127455/