Ios 放大UITableViewCell,使其滚动到屏幕中央
我已经在这方面工作了48个小时了,似乎不能靠我自己解决它。我试图实现的是,当一个UITableViewCell从屏幕的底部滚动到顶部时,它开始变小,在到达屏幕的中心部分时放大,然后在向上滚动并离开屏幕时再次开始缩小(反之亦然,从上到下)。我可以让它正常工作,但是看起来contentView正在调整大小,而实际的单元格高度(UITableView)却没有 我想要的是: 上下滚动可根据UITableViewCell在屏幕上的y位置平滑调整其大小 发生了什么(尽管我很难确认): 同样,单元格高度好像没有被调整,但contentView的高度被调整了 我可以通过覆盖UITableView的layoutVisibleCells方法来实现这一点:Ios 放大UITableViewCell,使其滚动到屏幕中央,ios,swift,uitableview,Ios,Swift,Uitableview,我已经在这方面工作了48个小时了,似乎不能靠我自己解决它。我试图实现的是,当一个UITableViewCell从屏幕的底部滚动到顶部时,它开始变小,在到达屏幕的中心部分时放大,然后在向上滚动并离开屏幕时再次开始缩小(反之亦然,从上到下)。我可以让它正常工作,但是看起来contentView正在调整大小,而实际的单元格高度(UITableView)却没有 我想要的是: 上下滚动可根据UITableViewCell在屏幕上的y位置平滑调整其大小 发生了什么(尽管我很难确认): 同样,单元格高度好像
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没有完全调整大小。它确实会部分调整大小,但由于某些原因,它不会调整大小以匹配单元格的边框。不知道为什么