美文网首页工作生活
无动画刷新tableview

无动画刷新tableview

作者: CodingTom | 来源:发表于2019-07-04 11:13 被阅读0次
    UIView.performWithoutAnimation {
        tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .none)
    }
    

    一、UIView、pop和Core Animation的主要区别

    1. Core Animation的动画只能添加到layer上(layer.position和view.frame类似)

    2. pop的动画能添加到任何对象

    3. pop的底层并非基于Core Animation, 是Facebook用OC和C++开发的基于CADisplayLink动画

    4. Core Animation的动画仅仅是表象, 并不会真正修改对象的frame\size等值,通常用在不需要与用户交互的动画(如转场动画/下载进度动画)

    5. pop和UIView实现的动画实时修改对象的属性, 真正地修改了对象的属性

    CAAnimation中的一些属性:
    duration:动画的持续时间

    repeatCount:重复次数,无限循环可以设置HUGE_VALF或者MAXFLOAT

    repeatDuration:重复时间

    removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards

    beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间

    timingFunction:速度控制函数,控制动画运行的节奏

    delegate:动画代理

    fillMode决定当前对象在非active时间段的行为。(要想fillMode有效,最好设置removedOnCompletion = NO)

    kCAFillModeRemoved 这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态

    kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态
    kCAFillModeBackwards 在动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始。

    kCAFillModeBoth 这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态

    CAMediaTimingFunction:速度控制函数

    kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉

    kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开

    kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地

    kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。

    相关文章

      网友评论

        本文标题:无动画刷新tableview

        本文链接:https://www.haomeiwen.com/subject/kwjlhctx.html