【发布时间】:2018-07-23 13:45:03
【问题描述】:
我有自定义 UITableViewCell 并添加了几个子视图。我正在使用Auto Layout。我需要向单元格添加另一个子视图,但不使用Auto Layout(这样我就可以使用pan gesture 左右移动)。当我添加它时,它的高度错误(比想要的大)。我也在检查单元格的高度,它小于contentView 的高度。这是我的代码:
class IntervalCell: UITableViewCell {
override func awakeFromNib() {
super.awakeFromNib()
}
func createThumb() {
let height = self.frame.size.height - 20
let width = height * 0.7
let originY: CGFloat = 0
let originX = sliderView.frame.origin.x - width / 2
let thumbFrame = CGRect(x: originX, y: originY, width: width, height: height)
let testView = UIView(frame: thumbFrame)
testView.backgroundColor = .red
self.contentView.addSubview(testView)
}
}
由于let height = self.frame.size.height - 20,假设子视图的高度只是屏幕的一部分,但实际上它大于整个单元格的高度。 crateThumb 在 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 中调用。
【问题讨论】:
-
您可以使用自动布局,即使您想使用平移手势移动视图。这对调整大小有很大帮助,并且可以更轻松地处理大小变化(例如设备旋转)。
-
如果你需要在 didSelect 里面,那么它应该有正确的 frame ,还要设置 clipsToBounds = true
-
@DonMag 是的。我想我可以将它与
Auto Layout一起使用。我之前遇到过问题,但我正在进行转换并更新图像。 (这个:stackoverflow.com/questions/49280086/…)。但是现在我只需要向左或向右移动它,所以它可能会受到约束。谢谢
标签: ios swift uitableview frame