Ios Swift:UITableView在滚动时增加layoutSubviews()
我有一个Swift中带有自定义单元格的表视图,其中包含一个水平布局视图。我注意到,在水平视图中滚动正确定位的子视图时,子视图开始成倍增加。我想这与在表格滚动时调用layoutSubviews()有关,而事实上tableview在隐藏时回收其单元格,并在需要时显示它们,但忽略当前定位的子视图 看起来像这样 以前已经有一个类似的问题,但没有好的答案 下面是我在自定义单元格中用于水平定位的代码:Ios Swift:UITableView在滚动时增加layoutSubviews(),ios,xcode,uitableview,swift,Ios,Xcode,Uitableview,Swift,我有一个Swift中带有自定义单元格的表视图,其中包含一个水平布局视图。我注意到,在水平视图中滚动正确定位的子视图时,子视图开始成倍增加。我想这与在表格滚动时调用layoutSubviews()有关,而事实上tableview在隐藏时回收其单元格,并在需要时显示它们,但忽略当前定位的子视图 看起来像这样 以前已经有一个类似的问题,但没有好的答案 下面是我在自定义单元格中用于水平定位的代码: class HorizontalLayout: UIView { var xOffsets:
class HorizontalLayout: UIView {
var xOffsets: [CGFloat] = []
override func layoutSubviews() {
var width: CGFloat = 0
for i in 0..<subviews.count {
var view = subviews[i] as UIView
view.layoutSubviews()
width += xOffsets[i]
view.frame.origin.x = width
width += view.frame.width
}
self.frame.size.width = width
}
override func addSubview(view: UIView) {
xOffsets.append(view.frame.origin.x)
super.addSubview(view)
}
func removeAll() {
for view in subviews {
view.removeFromSuperview()
}
xOffsets.removeAll(keepCapacity: false)
}
}
有没有办法解决这个问题,防止滚动时子视图成倍增加,或者有更好的办法在tableview单元格中水平放置子视图
func loadStops(stops:[String]) {
for stop in stops {
// just testing purposes only
let view = UIView(frame: CGRectMake(10, 0, 40, 40))
view.backgroundColor = UIColor.redColor()
stopsView.addSubview(view)
}
}