放大UITableViewCell,因为它滚动靠近屏幕中心

时间:2016-01-06 17:11:43

标签: ios swift uitableview

我现在已经工作了48个小时了,似乎无法自己解决这个问题。我想要实现的是当UITableViewCell从屏幕的底部滚动到顶部时它开始变小,当它到达屏幕的中心部分时放大,然后当它向上滚动时再次开始缩小尺寸离开屏幕(反之亦然,从上到下)。我可以让它工作,但似乎contentView正在调整大小,实际的单元格高度(UITableView)不是。

我想要的: correct

向上或向下滚动可以根据屏幕上的y位置平滑调整所有uitableviewcells的大小。

似乎正在发生的事情(虽然我无法确认):incorrect

同样,就好像没有调整单元格高度,但是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没有完全调整大小。它会部分调整大小,但由于某种原因,它不会调整大小以匹配单元格的帧。不知道为什么......

0 个答案:

没有答案