【问题标题】:Animate Scroll View to show same content with different values iOS Swift动画滚动视图以显示具有不同值的相同内容 iOS Swift
【发布时间】:2016-10-24 18:08:04
【问题描述】:

我需要为滚动视图设置动画,以根据分段控件上的选择显示相同的视图但具有不同的值。我需要从左到右和从右到左的幻灯片动画,以在同一 UI 上显示不同的值。我不想创建重复的视图。

【问题讨论】:

    标签: ios uiscrollview swift2 uisegmentedcontrol


    【解决方案1】:

    我遇到了完全相同的问题。想要避免仅仅为了动画而创建多个表格视图。 这是我解决它的方法:

    基本思路:截取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 的代码留作练习!

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多