资讯专栏INFORMATION COLUMN

iOS动画编程-AutoLayout动画[ 3 ] Animating by replacing c

miya / 736人阅读

介绍

之前的几节中,我们都是通过修改一个约束的值来实现动画的。但是如果你想做的更多,你可能需要删除旧的约束并添加新的约束

删除约束

在IB中,我们可以为每一个约束注册一个identifier



在这个位置加入如下代码:

if constraint.identifier == "TitleCenterY" { constraint.active = false
//add new constraint
continue
}

如果你想移除这个约束,可以将它的active属性置为false
如果这时它没有其它引用,ARC机制将会将它回收

通过代码添加约束Adding constraints programmatically

在刚才代码的add new constraint位置加入:

let newConstraint = NSLayoutConstraint( item: titleLabel,
attribute: .CenterY,
relatedBy: .Equal,
toItem: titleLabel.superview!,
attribute: .CenterY,
multiplier: isMenuOpen ? 0.67 : 1.0, constant: 5.0)
newConstraint.identifier = "TitleCenterY"
newConstraint.active = true

这样我们就定义了一个新的约束,并使他生效
NSLayoutConstraint的构造器带有一大串的参数,不过幸好他们的排列方式正好如同一个方程

item: The first item in the equation, in this case the title label.

attribute: The attribute of the first item of the new constraint.

relatedBy: A constraint can represent either a mathematical equality or an inequality. In this book you’ll only use equality expressions, so here you use .Equal to represent this relationship.

toItem: The second item in the constraint equation; in this case, it’s your title’s superview.

attribute: The attribute of the second item of the new constraint. • multiplier: The equation multiplier as discussed earlier.

constant: The equation constant.
随后的步骤中,我们为这个约束添加了一个identifier,并且使他生效
*如果过去你就习惯于用代码添加约束,也许你会习惯于使用addConstraint方法,在iOS8+中,苹果推荐通过设置active属性使其生效

Adding menu content

actionToggleMenu方法底部加入如下的代码

if isMenuOpen {
        slider = HorizontalItemList(inView: view)
        slider.didSelectItem = { index in
        print("add (index)")
        self.items.append(index)
        self.tableView.reloadData()
        self.actionToggleMenu(self)
        }
        self.titleLabel.superview!.addSubview(slider)
    }
    else {
    slider.removeFromSuperview()
    }

这样我们就加入了水平菜单

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15943.html

相关文章

  • iOS动画编程-AutoLayout动画[ 1 ]Animating Constraints

    摘要:简介自动布局功能随着的发布横空出世,现在已经成为了机型适配最佳的解决方案之一。由于自动布局的特点,对于使用自动布局功能的视图,我们不能再像之前一样去操作它的等属性,我们通过对布局约束的操作来代替之前的方法来实现动画。 简介 AutoLayout自动布局功能随着iOS6的发布横空出世,现在已经成为了iOS机型适配最佳的解决方案之一。由于自动布局的特点,对于使用自动布局功能的视图,我们不能...

    sihai 评论0 收藏0
  • iOS动画编程-AutoLayout动画[ 2 ]Inspecting and animating

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

    ad6623 评论0 收藏0
  • iOS动画编程-AutoLayout动画[ 5 ] Animating dynamically cr

    摘要:前段时间考试,没有来得及写文,最近会抽时间把部分写完介绍这一节中,我们将利用本节所学的内容,创建一个新的,添加约束并显示出来函数将在我们点击的时候显示出来一个新的,实现如下效果在方法中加入如下代码来创建一个新的在上面的代码中,我们加载了一张 前段时间考试,没有来得及写文,最近会抽时间把Animation部分写完 介绍 这一节中,我们将利用本节所学的内容,创建一个新的View,添加约束并...

    Rocko 评论0 收藏0
  • IOS开发之Autolayout自动布局

    摘要:先在中取消勾选选项在自定义的大小和位置栏目中,对中的线全部去掉,这样就可以自适应各种尺寸大小的屏幕了。取消连线取消之后的结果可以看出,如果横屏,里边的块也处于中间位置。 一、简介 在以前的iOS程序中,是如何设置布局UI界面的?经常编写大量的坐标计算代码为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还需要分别为2种屏幕编写不同的坐标计算代码(即传说中的...

    Jingbin_ 评论0 收藏0
  • [iOS 10 day by day] Day 4:新的动画 API UIViewPropertyA

    摘要:但苹果在中新加的组件能把这些步骤简化许多进入的世界吧的新纪元的设计得很完善,可扩展性也很好。如果你需要在苹果提供的时间函数之外自定义另一种时间曲线,只需传进一个实现协议的对象。为提供了详尽的文档。 《iOS 10 day by day》是 shinobicontrols 公司编写的系列博客,介绍开发者需要了解的 iOS 10 新特性,每周更新。本系列翻译(文集地址)已取得官方授权。目...

    Yuqi 评论0 收藏0

发表评论

0条评论

miya

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<