iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating
iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating
hejunbinlan 发表于1年前
iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating
  • 发表于 1年前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating constraints

介绍

通过可视化方法,使用outlets来控制约束,实现动画确实非常方便也非常容易,但是有时你不可能把UI上所有元素都做outlet,这会有巨大的工程量。也许你希望通过代码来增减、调整约束
由于这些原因,你将需要在运行时检查已存在的约束,并且用代码让它们动起来。

Demo

接着我们上一个Demo,在actionToggleMenu()方法中添加

for con in titleLabel.superview!.constraints { print(" -> \(con.description)\n")
}

通过这么一段代码,我们遍历了menu bar view的所有约束并输出在了命令行

这样的输出显然很混乱,那我们看出哪个我们要做调整的约束呢
比如我们如下的约束:
UIView:...centerX == UILabel:...'Select Item'.centerX
这显然是UIView UILabel之间的约束、它的description也包括了label的current text
centerX让我们判断出来,这个约束与horizontally centers有关,这样就能知道这个约束是做什么的了

Animating UILabel constraints

随后在actionToggleMenu(_:)方法中,判断开关状态后,添加如下代码:

    for constraint in titleLabel.superview!.constraints {
        if constraint.firstItem as? NSObject == titleLabel &&
        constraint.firstAttribute == .CenterX {
            constraint.constant = isMenuOpen ? -100.0 : 0.0
            continue
        }
    }

这样我们便找到了我们要修改的约束并且改变了它的值

共有 人打赏支持
粉丝 38
博文 522
码字总数 21018
×
hejunbinlan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: