Auto Layout和动画一起使用出现的问题
2016-01-08 19:52
453 查看
众所周知Auto Layout是随着他约束的控件的位置改变而改变
1.在一个UIView里面添加一个UIImageView,然后给UIImageView添加约束
2.修改PopMenu的frame,让其边移动遍缩小 self.frame
= CGRectMake(44, 44, 0, 0);
3.这时候会出现UIImageView中的Image也就是小女孩图片会直接变白如图
4.为什么会出现这个问题呢?我们在上面说过Auto Layout是随着他约束的控件的位置改变而改变,在第3步把UIIMageView的相对约束控件也就是说,PopMenu这个View的尺寸设置为self.frame = CGRectMake(44, 44, 0, 0); 只要执行这句代码,UIImageView的尺寸会瞬间变为0
5.那我怎么证明 UIImageView的尺寸会瞬间变为0呢?具体看图
5.1修改PopMneu的尺寸为 self.frame = CGRectMake(44, 44,
50, 50);
5.2运行起来的效果
也就是说白色为他的父控件的颜色其实不是uiImageView变白色的
6.那这个问题怎么解决呢?
7. 以上是一种解决办法,其实还有一种解决办法就是用transform动画效果
1.在一个UIView里面添加一个UIImageView,然后给UIImageView添加约束
2.修改PopMenu的frame,让其边移动遍缩小 self.frame
= CGRectMake(44, 44, 0, 0);
3.这时候会出现UIImageView中的Image也就是小女孩图片会直接变白如图
4.为什么会出现这个问题呢?我们在上面说过Auto Layout是随着他约束的控件的位置改变而改变,在第3步把UIIMageView的相对约束控件也就是说,PopMenu这个View的尺寸设置为self.frame = CGRectMake(44, 44, 0, 0); 只要执行这句代码,UIImageView的尺寸会瞬间变为0
5.那我怎么证明 UIImageView的尺寸会瞬间变为0呢?具体看图
5.1修改PopMneu的尺寸为 self.frame = CGRectMake(44, 44,
50, 50);
5.2运行起来的效果
也就是说白色为他的父控件的颜色其实不是uiImageView变白色的
6.那这个问题怎么解决呢?
//修改父控件的尺寸
self.frame = CGRectMake(44, 44, 0, 0);
//当父控件的尺寸修改了,需要重绘一次,ImageView就不会瞬间变成白色的了
// 应要记住把这句代码放在下面,如果把这句代码放在self.frame = CGRectMake(44, 44, 0, 0);上面是没有意义的,就相当于下面的代码没有写<span style="font-family: Arial, Helvetica, sans-serif;">[self layoutIfNeeded];</span>
7. 以上是一种解决办法,其实还有一种解决办法就是用transform动画效果
//利用transform动画就可以让子控件随着父控件的缩小而缩小,也就是说可以把Layout去掉
// 这里一定要搞一个最小点,缩小比例是0最小,1为他的本身,这里不要搞成0,如果搞成0就会瞬间变没有
self.transform = CGAffineTransformMakeScale(0.01, 0.01); // 让其移动 self.center = CGPointMake(44, 44);
<span style="color: rgb(69, 69, 69); font-family: 'PingFang SC'; font-size: 14px; font-weight: bold;">//这样就可以把问题解决了</span>8.但是有的同学想Layout 和transform一起用那就又会出现瞬间变白的效果
// 不去掉Layout就会瞬间变白因为父控件缩小,layout就会瞬间缩小
self.transform = CGAffineTransformMakeScale(0.01, 0.01);
// 让其移动 self.center = CGPointMake(44, 44);
// 那怎么解决呢?
<span style="color:#ff6600;">
// 解决办法
<span style="color: rgb(69, 69, 69); font-family: Arial, Helvetica, sans-serif;">// 先移动 当代码执行到这一行的时候,UIImageView的Layout判断他没有缩小尺寸,只是移动了位置,他就只是更改位置他就会调整自己,其图片尺寸并不会缩小</span>
self.center = CGPointMake(44, 44);
self.transform = CGAffineTransformMakeScale(0.01, 0.01);
相关文章推荐
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- 样式表CSS布局经验
- css网页布局中注意的几个问题小结
- DL.DT.DD实现左右的布局简单例子第1/2页
- 使用CSS框架布局的缺点和优点小结
- div+CSS网页布局的意义与副作用原因小结第1/2页
- Android编程之代码创建布局实例分析
- CSS顶级技巧大放送,div+css布局必知
- 用div实现像table一样的布局方法
- 精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
- jQuery EasyUI 布局之动态添加tabs标签页
- android自定义RadioGroup可以添加多种布局的实现方法
- 瀑布流布局并自动加载实现代码
- Android代码实现图片和文字上下布局
- SWT(JFace)体验之RowLayout布局
- Bootstrap每天必学之栅格系统(布局)
- Android布局之LinearLayout线性布局
- Extjs学习笔记之七 布局
- android布局属性详解分享