demo地址 :链接: http://pan.baidu.com/s/1c00ipDQ 密码: mi4c
1 @interface ViewController () @property (nonatomic, strong) UILabel *label; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //创建一个Label
UILabel *label = [[UILabel alloc] init];
label.text = @"test";
label.backgroundColor = [UIColor orangeColor];
[self.view addSubview:label];
self.label = label;
}
#pragma mark -- 在视图将要显示的时候 设置位置
- (void)viewWillAppear:(BOOL)animated { self.label.centerX -= self.view.width;
self.label.centerY = ;
}
#pragma mark --在视图现实的时候
- (void)viewDidAppear:(BOOL)animated { /*当一个自定义view的某个属性发生改变,
并且可能影响到constraint时,
需要调用此方法去标记constraints需要在未来的某个点更新,
系统然后调用updateConstraints.
*/
[self.view setNeedsUpdateConstraints]; //设置动画
[UIView animateWithDuration: animations:^{ //关闭系统的自动布局
self.label.translatesAutoresizingMaskIntoConstraints = NO; //将自己的属性存放到数组中
NSDictionary *dict = @{@"label": self.label}; //设定约束
//设置水平约束条件
NSArray *arrayH = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-80-[label]-80-|" options: metrics:nil views:dict];
//设置垂直约束条件
NSArray *arrayV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-80-[label]" options: metrics:nil views:dict];
//添加约束
[self.view addConstraints:arrayH];
[self.view addConstraints:arrayV]; // 当视图发生改变的时候layoutIfNeeded 方法来强制进行布局
[self.label layoutIfNeeded]; } completion:nil];
}

可以将约束变成自己的一个属性,每次要改变约束的时候,删除相关的约束 例如:

@property (nonatomic, copy) NSArray *arrayV;
self.arrayV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-80-[label]" options:0 metrics:nil views:dict];
当要改变约束的时候,将它移除:

[self.view removeConstraint:self.arrayV];  

虽然这样做有点前期麻烦,但是做成之后就觉得非常值得了

NSLayoutConstraint 布局,配合简单的动画效果的更多相关文章

  1. 【从无到有】教你使用animation做简单的动画效果

    今天写写怎么用animation属性做一些简单的动画效果 在CSS选择器中,使用animition动画属性,调用声明好的关键帧 首先声明一个动画(关键帧): @keyframes name{ from ...

  2. 用Direct2D和DWM来做简单的动画效果2

    原文:用Direct2D和DWM来做简单的动画效果2 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sunnyloves/article/detai ...

  3. 用Direct2D和DWM来做简单的动画效果

    原文:用Direct2D和DWM来做简单的动画效果 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sunnyloves/article/detail ...

  4. ExtJS简单的动画效果2(ext js淡入淡出特效)

    Ext 开发小组则提供了 Fx 类集中处理了大部分常用的 js 动画特效,减少了我们自己手写代码的复杂度. 面我给出一个简单的实例代码,其中囊括了大部分的 Ext 动画效果: (注意导入js和css文 ...

  5. 32.ExtJS简单的动画效果

    转自:http://blog.sina.com.cn/s/blog_74684ec501015lhq.html 说明:这篇文章的大部分内容来源于网上,经过自己实现其效果后,整理如下: 在进行 Java ...

  6. tableView简单的动画效果

    tableView 中一些动画效果通常都是实现willDisplayCell的方法来展示出一些动画的效果 (1).带有3D效果的小型动态展示 -(void)tableView:(UITableView ...

  7. jquery 最简单的动画效果

    <p style="border: 1px solid red"> 我会慢慢变大 </p> <a>dianji</a> <sc ...

  8. css制作简单loading动画效果【css3 loading加载动画】

    曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...

  9. ExtJS简单的动画效果(ext js淡入淡出特效)

    1.html页面:Application HTML file - index.html <html> <head> <title>ExtJs fadeIn() an ...

随机推荐

  1. 推荐一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数

    推荐一个JavaScript触发器插件js-trigger js-trigger是一个JavaScript触发器插件,可通过指定频次.指定时间内触发指定的处理函数 https://tanwei-cc. ...

  2. Python学习札记(十五) 高级特性1 切片

    参考: 高级特性 切片 Note 1.掌握了Python的基础语法之后,就可以写出很多很有用的程序了,比如打印1-90的奇数: #!/usr/bin/env python3 L = [] n = 1 ...

  3. Codeforces Round #365 (Div. 2) B - Mishka and trip

    http://codeforces.com/contest/703/problem/B 题意: 每个点都有一个值,每条边的权值为这两个点相乘.1~n成环.现在有k个城市,城市与其他所有点都相连,计算出 ...

  4. Solr学习总结 Solr的安装与配置

    接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复.需要注意的是这两个的版本兼容问题.貌似java8 不支持,t ...

  5. MySQL行锁、间隙锁、Next-Key锁

    InnoDB是一个支持行锁的存储引擎,它有三种行锁的算法: Record Lock:行锁,单个行记录上的锁. Gap Lock:间隙锁,锁定一个范围,但不包括记录本身.GAP锁的目的,是为了防止幻读. ...

  6. Ubuntu 14.04配置虚拟主机

    虚拟主机常用于在一个单独的IP地址上提供多个域名的网站服务.如果有人想在单个VPS的单个IP地址运行多个网站,这是非常有用的.在这个教程中,让我告诉你如何设置在Ubuntu 14.04 LTS的Apa ...

  7. IOS-源代码管理工具(Git)

    一.简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Benedict ...

  8. OpenStack Mitaka Neutron SR-IOV配置

    ### 一.在所有节点(控制节点.计算节点) 1.修改BIOS ``` BOIS里面开启SR-IOV功能 开启 VT-d (inter virtualization technology)和 SR-I ...

  9. 初次学习AngularJS

    一.指令1.AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. ng-app 指令初始化一个 AngularJS 应用程序. ng-app 指令定义了 AngularJS 应用程序的 ...

  10. C# 设计模式巩固 - 工厂方法模式

    前言 实在编不出来了~ 介绍 - 工厂方法模式 官方定义:(下面摘自百度百科)工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中 ...