我还没能在网上找到任何这方面的例子。我怎样才能达到以下效果?点击表格行时,我不想使用标准的从左到右的标准效果,我希望视图控制器转换动画如下所示:
我希望能够通过从底部边缘向上拖动来交互地转换回表格视图,从而实现上述相反的操作。即视图开始收缩回正常的表格视图单元格作为" offscreen"细胞动画回到原位。
我已经想过拍摄桌子的快照并将其分割到单元格上方和下方的点,并将这些快照设置为屏幕外的自定义视图控制器转换的一部分。有没有更好的办法?理想情况下,我不想拍摄快照,因为我可能想要动画等等,当它们在屏幕外消失时仍然会在表格视图行中发生。
答案 0 :(得分:0)
首先,我今天看到了你的帖子,他用快速的编程语言编写。 以下代码是将所选单元格扩展到全屏,子视图将淡出,背景图像将会扩展。
首先完成cellForRowAtIndexPath,然后在didSelectRowAtIndexPath中,
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
isSelected = true
selectedCellIndex = indexPath.row
tableView.beginUpdates()
var cellSelected: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
cellSelected.frame = tableCities.rectForRowAtIndexPath(indexPath)
println("cell frame: \(cellSelected) and center: \(cellSelected.center)")
let newCell = cellSelected.frame.origin.y - tableOffset
println("new cell origin: \(newCell)")
var tempFrame: CGRect = cellSelected.frame
variableHeight = cellSelected.frame.origin.y - tableOffset
tempFrame.size.height = self.view.frame.height
println("contentoffset: \(tableView.contentOffset)")
let offset = tableView.contentOffset.y
println("cell tag: \(cellSelected.contentView.tag)")
let viewCell: UIView? = cellSelected.contentView.viewWithTag(cellSelected.contentView.tag)
println("label: \(viewCell)")
viewCell!.alpha = 1
UIView.animateWithDuration(5.0, delay: 0.1, options: UIViewAnimationOptions.BeginFromCurrentState, animations: {
tableView.setContentOffset(CGPointMake(0, offset + self.variableHeight), animated: false)
tableView.contentInset = UIEdgeInsetsMake(0, 0, self.variableHeight, 0)
tableView.endUpdates()
cellSelected.frame = tempFrame
viewCell!.alpha = 0
println("contentoffset: \(tableView.contentOffset)")
}, completion: nil)
}
然后将你的heightForRowAtIndexPath更新为
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if isSelected && (selectedCellIndex == indexPath.row) {
return self.view.frame.height
}else {
return 100
}
}
如果已经解决,请忽略它。这可能对其他人有所帮助。