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. Flume在企业大数据仓库架构中位置及功能

    Flume在企业大数据仓库架构中位置及功能 hadoop 数据仓库 flume 数据仓库架构 1.如下图所示,外部数据中,关系型数据库导入到HDFS用sqoop,由Nginx产生的文件实时监控用Flu ...

  2. HTTP协议中的COOKIE机制简单理解

    1.为什么会有COOKIE这种机制 首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的这次请求呢, HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当做一次 ...

  3. HttpServlet实现serializable

    Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending a ...

  4. MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)

    MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与 ...

  5. Microsoft's OWIN implementation, the Katana project

    参考: https://github.com/aspnet/AspNetKatana/ https://github.com/aspnet/AspNetKatana/wiki/Roadmap

  6. model 数据注解

    https://www.cnblogs.com/leoxuan/articles/6555396.html ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Mode ...

  7. mysql too many connections解决方法

    MySQL提示“too many connections”的解决办法   今天生产服务器上的MySQL出现了一个不算太陌生的错误“Too many connections”.平常碰到这个问题,我基本上 ...

  8. bzoj 1798 双标记区间修改线段树

    #include<bits/stdc++.h> using namespace std; #define MAXN 100000 #define M ((L+R)>>1) #d ...

  9. uva 12086 线段树or树状数组练习

    题目链接   https://vjudge.net/problem/34215/origin 这个题就是线段树裸题,有两种操作,实现单点更新和区间和的查找即可,这里第一次学习使用树状数组完成. 二者相 ...

  10. sql 多个字段分组,删除重复记录,保留ID最小的一条

    IF OBJECT_ID('cardDetail') IS NOT NULL DROP TABLE cardDetail CREATE TABLE cardDetail ( id ,) PRIMARY ...