我现在已经工作了48个小时了,似乎无法自己解决这个问题。我想要实现的是当UITableViewCell从屏幕的底部滚动到顶部时它开始变小,当它到达屏幕的中心部分时放大,然后当它向上滚动时再次开始缩小尺寸离开屏幕(反之亦然,从上到下)。我可以让它工作,但似乎contentView正在调整大小,实际的单元格高度(UITableView)不是。
向上或向下滚动可以根据屏幕上的y位置平滑调整所有uitableviewcells的大小。
同样,就好像没有调整单元格高度,但是contentView的高度是。
我可以通过覆盖UITableView的layoutVisibleCells方法来实现这一点:
func layoutVisibleCells() {
let indexpaths = indexPathsForVisibleRows!
let totalVisibleCells = indexpaths.count - 1
if totalVisibleCells <= 0 { return }
for index in 0...totalVisibleCells {
let indexPath = indexpaths[index]
if let cell = cellForRowAtIndexPath(indexPath) {
var frame = cell.frame
if let superView = superview {
let point = convertPoint(frame.origin, toView:superView)
let pointScale = point.y / CGFloat(superView.bounds.size.height)
var height = frame.size.height + point.x;
if height < 150.0 {
height = 150.0;
}
if height > 200.0 {
height = 200.0;
}
frame.size.height = height;
NSLog("index %li: x: %f", index,frame.origin.x);
NSLog("point at index %li: %f, %f - percentage: %f", index,point.x,point.y, pointScale);
}
cell.frame = frame
}
}
}
我从COBezierTableView开始用这个方法进行调整,这是用Swift编写的。我的项目的其余部分都在Obj-C中,所以解密的东西有点挑战,因为我还在那里学习。
对我目前的尝试的任何见解,或者如何以另一种完全不同的方式实现这一目标的建议,都是非常受欢迎的。提前谢谢。
更新 所以我实际上发现我怀疑的情况正好相反。 UITableViewCell帧正确调整大小。这是单元格的contentView没有完全调整大小。它会部分调整大小,但由于某种原因,它不会调整大小以匹配单元格的帧。不知道为什么......