文档章节

iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating

hejunbinlan
 hejunbinlan
发布于 2016/08/01 13:35
字数 347
阅读 1
收藏 0

介绍

通过可视化方法,使用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
        }
    }

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

本文转载自:https://segmentfault.com/a/1190000003927525

共有 人打赏支持
hejunbinlan
粉丝 41
博文 595
码字总数 21569
作品 0
浦东
高级程序员
私信 提问
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
05/26
0
0
UIView Animations 学习笔记(一)简介及API说明

目录 UIView Animations 学习笔记(一)简介及API说明 UIView Animation 学习笔记 应用示例 一、简介 随着iOS7的发布,动画与运动效果变成了Apple和第三方开发者进行app设计的中心。iOS7介绍...

灰大羊
2015/08/01
0
0
iOS一些代码的取巧写法总结(二)

一、在xib/storyboard里面设置view圆角半径 在xib/storyboard里面设置view圆角半径 神奇的IB_DESIGNABLE和IBInspectable(xib中设置圆角) 二、push pop 动画突然消失的解决方案 产生的原因是动...

朝雨晚风
2016/12/05
0
0
AutoLayout and animateWithDuration problems

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, ......

Ylang
2014/06/04
279
0
iOS高仿QQ侧滑控件、下载框架、动画效果、扫一扫、颜色变化、K线图等源码

iOS精选源码 仿京东"加入购物车"转场动画(http://www.code4app.com/thread-28162-1-1.html) ColorTool(颜色转换)(http://www.code4app.com/thread-29256-1-1.html) Swift 专业版K线(http://w......

sunnyaigd
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

websocket 接口简单测试工具,webcoket实用测试工具

chorme 插件 Simple WebSocket Client 对开发来说够用了,能连互联网,也能连本地的。

SimonAt
3分钟前
0
0
Ext中 get、getDom、getCmp的区别

getDom方法能够得到文档中的DOM节点,该方法中包含一个参数,该参数可以是DOM节点的id、DOM节点对象或DOM节点对应的Ext元素(Element)等。 (与getElementById是一个效果) •Ext.onReady(funct...

休辞醉倒
11分钟前
0
0
springboot jpa 访问数据库

spring boot(五):spring data jpa的使用 SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

颖辉小居
26分钟前
4
0
Quartz + Oracle 分布式Job实现

简述 实现 依赖包 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.3</version><exclusions><exclusion><groupId>com.zax......

呼呼南风
31分钟前
5
0
崛起于Springboot2.X之集成规则引擎Drools(41)

1、创建Springboot项目,勾选Web模块和lombok插件 2、添加pom其他依赖 <dependency> <groupId>org.kie</groupId> <artifactId>kie-spring</artifactId> <version>7.11.0.Fin......

木九天
39分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部