cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - 请教一个 iOS 动画

我想在上面的第一个方块和第二个方块之间插入一个新的方块,我希望的插入动画是新的方块从中心向两边展开(类似ppt中某个动画),同时其他几个方块的宽度能够慢慢变小,最后五个方块能够等宽,就像下面这样

但是我目前的情况是其中的文字会先瞬间移动到最终的位置(也就是说方块变小的过程中文字是不居中的),然后方块的宽度再慢慢变小,不知道为什么,我都是使用autolayout写的动画,我目前的写法是先写上新的方块的top,bottom,leading,trailing约束,然后调用layoutIfNeeded,最后是写上等宽约束,在animate block里面调用layoutIfNeeded。

天蓬老师天蓬老师2771 hari yang lalu570

membalas semua(1)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 09:48:05

    Ekspresi anda tidak begitu jelas. Perkara yang paling penting tentang animasi autolayout adalah untuk memahami keadaan paparan. Hanya memanggil layoutIfNeeded hanya akan memberikan kesan terakhir. Keadaan paparan mesti disimpan sebelum mencapai titik keadaan. Secara ringkasnya, selepas animasi dilaksanakan, gunakan layoutIfNeeded untuk mencapai kesannya. Jika terdapat animasi lain, anda perlu menggunakan setNeedsLayout Selepas itu, laksanakan atribut view yang perlu diubah akhirnya >

    // 大概代码就是这样:
    // 首先确定 视图的最终位置;也可以是上一次动画结束
    [view layoutIfNeeded];
    // 然后让视图进入下一次动画准备状态
    [view setNeedsLayout];
    // *** 这里实现一些变化代码
    view.snp.top = ....
    // 最后再执行这个。如果是动画,就在 UIView animate 中执行。
    [view layoutIfNeeded];
    // 这样就 OK 了。

    balas
    0
  • Batalbalas