【发布时间】:2016-10-24 18:08:04
【问题描述】:
我需要为滚动视图设置动画,以根据分段控件上的选择显示相同的视图但具有不同的值。我需要从左到右和从右到左的幻灯片动画,以在同一 UI 上显示不同的值。我不想创建重复的视图。
【问题讨论】:
标签: ios uiscrollview swift2 uisegmentedcontrol
我需要为滚动视图设置动画,以根据分段控件上的选择显示相同的视图但具有不同的值。我需要从左到右和从右到左的幻灯片动画,以在同一 UI 上显示不同的值。我不想创建重复的视图。
【问题讨论】:
标签: ios uiscrollview swift2 uisegmentedcontrol
我遇到了完全相同的问题。想要避免仅仅为了动画而创建多个表格视图。 这是我解决它的方法:
基本思路:截取tableview并显示在root view上。然后,从左到右(或从右到左,取决于段控件的切换)做一个tableview的滑动动画
向右滑动时的代码
func switchToLeft() {
let newIndex = currentIndex - 1
if newIndex > 0 {
let sS = showScreenShot()
self.tableView.animateFromLeft(0.5){
sS.removeFromSuperview()
}
//update data and RELOAD your tableview here
}
}
func showScreenShot() -> UIView{
let image = getScreenShot()
let imageView = UIImageView(image: image)
let blankView = UIView(frame: self.view.frame)
blankView.addSubview(imageView)
self.tableView.superview?.addSubview(blankView)
self.tableView.superview?.bringSubviewToFront(self.tableView)
return blankView
}
func getScreenShot() -> UIImage?{
let viewToRender = self.tableView
let contentOffset = self.tableView.contentOffset
UIGraphicsBeginImageContext(viewToRender.bounds.size)
let ctx = UIGraphicsGetCurrentContext()!
// need to translate the context down to the current visible portion of the tableview
CGContextTranslateCTM(ctx, 0, -contentOffset.y-tableHeaderHt)
viewToRender.layer.renderInContext(ctx)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
将animateFromLeft 的代码留作练习!
【讨论】: