更新"xib约束动画"

       我是iOS开发。布局界面时,我偏爱xib布局,原因是,如果控件多时,创建控件的代码会很多,在加上一些绑定事件,或实现一些代理,再加上masonry的布局,整体代码量会猛增,虽清晰,但总觉得不如用xib拖控件,减少创建的代码,用xib约束,减少masonry布局的代码块。

       如果不熟悉如何修改xib的约束的,我这里先举个小列。如果熟悉,就跳过此部分。

       对控件拖约束,此时约束是实线,选择在代码中需要修改的约束上连敲两下左键,弹出小框,框中有三条,依次是Constant,Priority,Multiplier.其中Priority的值为1000。表示必须的约束,不可修改。将值修改为750。发现实线约束,变成虚线了,表示不必要的约束,可以修改。在约束上右键,关联约束到对应的类中。即可根据需要修改此约束。例如:

       self.playBtnHeightConstriant.constant = 36;

   self.playBtnHeightConstriant.priority = UILayoutPriorityDefaultHigh;//提升约束的优先级

       我在开发中用xib拖控件,加约束,然后修改约束的优先级,关联到相应类中,再通过改变约束值,做动画。现在我把动画分为两种类型来讲。

       一种类型是,通过不断改变约束值,实现动画。case 1,在scrollDidScroll方法中,根据scrollView.ContentOffset.y的值的改变,同步改变某个控件的约束。即可达到滑动UIScrollView或UITableView或UIWebView等对象时,某控件实现动画。case 2,A控件,B控件,C控件在垂直方向用约束相连,并修改A控件top约束的优先级,通过修改top约束的值,实现,A,B,C控件,垂直方向上一起移动。此类型的动画效果,较纯代码写控件用修改frame来做动画,更简单(通过修改一个,可以多个一起动画)且代码量少。

      第二种类型的动画是,约束值的修改,放到UIView动画中。经过多次尝试,得出,约束值的修改,是一瞬间完成的,无论是放置在UIView动画内外。故当自己用xib布局控件,想试用UIView动画修改约束,是达不到动画效果的。解决方案为,将控件的frame做相应的UIView动画。

     更新:

      第二种类型的动画,约束的更改放到UIView动画中,是可行的。只需要在修改约束后面紧跟着调用[父控件.view layoutIfNeeded];就可以了。

  如遇到错误的地方,请不吝指正。谢谢

  

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值