可以做动画的属性

Changes to several view properties can be animated—that is, changing the property creates an animation that conveys the change to the user over a short period of time. The UIView class does most of the work of performing the actual animations but you must still indicate which property changes you want to be animated.

也就是说这些动属性的变化在动画的线程中时,就会有动画的效果。

        UIView.animateWithDuration(0.5) {
            if Holder.animated
            {
                self.myButton?.bounds = CGRectMake(0, 0, s_ScreenWidth, 30);
                Holder.animated = false
            }
            else
            {
                self.myButton?.bounds = CGRectMake(0, 0, s_ScreenWidth/2, 60);
                Holder.animated = true
            }
        }

对于另一些属性,即使在动画的block中设置,也不会有动画效果。

        UIView.animateWithDuration(0.5) {
            if Holder.animated
            {
                self.myButton?.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10)
                Holder.animated = false
            }
            else
            {
                self.myButton?.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, -10)
                Holder.animated = true
            }
        }

setNeedsLayout与layoutIfNeeded

  • setNeedsLayout

    Invalidates the current layout of the receiver and triggers a layout update during the next update cycle.

    this method makes a note of the request and returns immediately. Because this method does not force an immediate update,

也就是说这个函数并不会是使界面马上更新,要等到下一次更新(页面刷新?)时。在动画的block中设置这个属性也不会有动画。
- layoutIfNeeded

Lays out the subviews immediately

因此调用这个函数会马上是界面更新。如果在block中调用这个函数,会有动画的效果。

    UIView.animateWithDuration(0.5) {
        if Holder.animated
        {
            self.myButton?.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10)
            self.myButton?.setNeedsLayout()
        }
        else
        {
            self.myButton?.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, -10)
            self.myButton?.layoutIfNeeded()
            Holder.animated = true
        }
时间: 2024-10-25 04:47:34

可以做动画的属性的相关文章

让CALayer的shadowPath跟随bounds一起做动画改变-b

在iOS开发中,我们经常需要给视图添加阴影效果,最简单的方法就是通过设置CALayer的shadowColor.shadowOpacity.shadowOffset和shadowRadius这几个属性可以很方便的为 UIView 添加阴影效果.但是如果单用这几个属性会导致离屏渲染(Offscreen Rendering),而且CoreAnimation在每一帧绘制阴影的时候都需要递归遍历所有sublayer的alpha通道从而精确的计算出阴影的轮廓,这是非常消耗性能的,从而导致了动画的卡顿. 为

Android13_fragment_view动画_属性动画

1,fragment:片段,碎片 应用场景:微信,微博的导航栏 1.1从3.0之后的系统引进的控件,代表的是屏幕的一部分,因为以往在手机上的绘制控件问题不大,但是如果是平板界面,每次绘制大量的控件对资源消耗很大,会引起卡顿 fragment允许屏幕先更新界面的一部分,是界面的一部分 点击声音才显示声音的ui界面,点击存储才显示出存储的界面,但是并不是在页面跳转,而是布局文件的切换,点击切换布局文件,通过模块化来使用 FrameLayout布局和fragment最相配,因为它渲染速度最快,效率最高

Android动画学习(缓动动画与属性动画的区别)

前言: 在 Android动画学习(概述)中,如果你看过这篇帖子,你应该会对缓动动画和属性动画之间的区别产生疑问,因为在它们的应用中,你会感觉这两种动画有着一些相似的地方,为此,我打算把这两种动画之间的区别做一下说明 区别: 在这里先附上官方文档对于这两种动画的区别说明(我所说的缓动动画对应在下文中的英文为:View Animation,属性动画对应在下文中的英文为:Property Animation): How Property Animation Differs from View Ani

transition和animation做动画(css动画二)

前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! translate:平移:是transform的一个属性: transform:变形:是一个静态属性,可以改变元素的形状或位置,做出2d或3d效果: transition:过渡,转变:使css属性值在一段时间内平滑的变化,需要有触发条件(如hover等),是animation的简化版: animation:动画:可以设置多帧效果,然后把它们组合变换,按动画效果展示出来: 1. transition 过渡

使用requestAnimationFrame做动画效果二

3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于在二月底完工了,中间绕了不少弯路,先把domo放出来: 要实行的功能显而易见,一开始我粗糙地不考虑性能,不使用requestAnimationFrame,已经做出来了,但是觉得不好,于是进行了进一步改进.采用对象的方法,先生成10个粉色的小方块,隐藏起来,然后利用requestAnimationFr

动态创建的元素怎么做动画

要做动画,一般都是要获取元素的一些基本属性,比如宽,高,颜色等 但是对于动态创建的元素,是不能获取这些属性的 只有插入到dom中,经过渲染才能获取这些属性 但是一旦插入到dom当中,先获取在改变就会有跳动的效果 为了避免这种情况,有两种解决方案 一种是将元素设置绝对定位,获取之后然后在放到正确位置,这种情况一般用在弹出框的居中显示中 一种是将元素设置成visibility:hidden;overflow:hidden;height:0; 然后获取scorllHeight,scrollWidth

Android动画之属性动画

当我们看到别人的APP里面或者写的Demo里面的一些很牛逼得动画效果的时候,是否会有那么一种冲动我要看看它的源代码到底是怎么写的,为毛我就是写不出这样的动画效果呢,为毛我只能做哪些简单的平移,缩放,旋转,透明度改变的动画效果呢.呵呵,当你这么想的时候,证明你应该存在两种主要的问题:第一,就是你的确基础知识不过关,别人用到的东西,你根本就没有接触过,但是这些东西的确是API里面确实存在的东西.第二,就是你的经验不够,逻辑思维能力还有待提升.任何一个很酷很炫的动画效果,都应该是由一系列的动画效果合成

Core Animation 文档翻译—附录B(可动画的属性)

前言 ? 许多CALayer和CIFliter的属性都是可动画的.本节附录列出了这些属性默认使用的动画. ? CALayer可动画属性 ? 表B-1展示了CALayer类的可动画属性.针对每个属性此表也列出了对应的默认动画对象的类型,这些动画以隐式的方式执行. ? Table B-1 Layer的属性和他们默认的动画 table th:first-of-type { width: 25%;} 属性 默认动画 anchorPoint 使用默认的隐式CABasicAnimation对象,在表Tabl

这样做动画交互,一点都不费力!

本文由云+社区发表 作者:paulzeng 导语:Lottie是Airbnb开源的一个面向 iOS.Android.React Native 的动画库,可实现非常复杂的动画,使用也及其简单,极大释放人力,值得一试. 一.简介 Lottie 是Airbnb开源的一个面向 iOS.Android.React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果. 现在使用各平台的 native 代码