Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 放大UITableViewCell,使其滚动到屏幕中央_Ios_Swift_Uitableview - Fatal编程技术网

Ios 放大UITableViewCell,使其滚动到屏幕中央

Ios 放大UITableViewCell,使其滚动到屏幕中央,ios,swift,uitableview,Ios,Swift,Uitableview,我已经在这方面工作了48个小时了,似乎不能靠我自己解决它。我试图实现的是,当一个UITableViewCell从屏幕的底部滚动到顶部时,它开始变小,在到达屏幕的中心部分时放大,然后在向上滚动并离开屏幕时再次开始缩小(反之亦然,从上到下)。我可以让它正常工作,但是看起来contentView正在调整大小,而实际的单元格高度(UITableView)却没有 我想要的是: 上下滚动可根据UITableViewCell在屏幕上的y位置平滑调整其大小 发生了什么(尽管我很难确认): 同样,单元格高度好像

我已经在这方面工作了48个小时了,似乎不能靠我自己解决它。我试图实现的是,当一个UITableViewCell从屏幕的底部滚动到顶部时,它开始变小,在到达屏幕的中心部分时放大,然后在向上滚动并离开屏幕时再次开始缩小(反之亦然,从上到下)。我可以让它正常工作,但是看起来contentView正在调整大小,而实际的单元格高度(UITableView)却没有

我想要的是:

上下滚动可根据UITableViewCell在屏幕上的y位置平滑调整其大小

发生了什么(尽管我很难确认):

同样,单元格高度好像没有被调整,但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
        }
    }
}
func layoutVisibleCells(){
让indexpaths=indexPathsForVisibleRows!
让totalVisibleCells=indexpaths.count-1
如果totalVisibleCells 200.0{
高度=200.0;
}
frame.size.height=高度;
NSLog(“索引%li:x:%f”,索引,frame.origin.x);
NSLog(“索引%li处的点:%f,%f-百分比:%f”,索引,点x,点y,点刻度);
}
cell.frame=frame
}
}
}
我从Swift中获得了在该方法中进行调整的想法。我的项目的其余部分在Obj-C中,所以破译东西有点困难,因为我还在那里学习

任何关于我目前尝试的见解,或关于如何以另一种完全不同的方式实现这一目标的建议,都是完全受欢迎的。提前谢谢

更新 所以我实际上发现了与我所怀疑的相反的情况。UITableViewCell框架的大小正在正确调整。单元格的contentView没有完全调整大小。它确实会部分调整大小,但由于某些原因,它不会调整大小以匹配单元格的边框。不知道为什么