ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:16.86KB ,
资源ID:3516411      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3516411.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Masonry使用注意篇.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Masonry使用注意篇.docx

1、Masonry使用注意篇Masonry使用注意篇 简要自动布局最重要的是约束:UI元素间关系的数学表达式。约束包括尺寸、由优先级和阈值管理的相对位置。它们是添加剂,可能导致约束冲突 、约束不足造成布局无法确定 。这两种情况都会产生异常。使用前:AutoLayout关于更新的几个方法的区别setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。layoutIfNeeded:告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这

2、个方法让动画生效。layoutSubviews:系统重写布局setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始updateConstraintsIfNeeded:告知立刻更新约束updateConstraints:系统更新约束使用1. 基本使用mas_makeConstraints:添加约束mas_updateConstraints:更新约束、亦可添加新约束mas_remakeConstraints:重置之前的约束multipler属性表示约束值为约束对象的乘因数, dividedBy属性表示约束值为约束对象的除因数,可用于设置view的宽高比/ 进行屏幕的

3、适配的时候,往往需要根据屏幕宽度来适配一个相应的高度,在此推荐使用如下约束的方式来进行控件的适配self.topView addSubview:self.topInnerView;self.topInnerView mas_makeConstraints:(MASConstraintMaker *make) make.height.equalTo(self.topView.mas_height).dividedBy(3); make.width.and.height.lessThanOrEqualTo(self.topView); make.width.and.height.equalTo(s

4、elf.topView).with.priorityLow(); make.center.equalTo(self.topView);priorityLow()设置约束优先级#define MAS_SHORTHAND_GLOBALS使用全局宏定义,可以使equalTo等效于mas_equalTo#define MAS_SHORTHAND使用全局宏定义, 可以在调用masonry方法的时候不使用mas_前缀/ 这里注意到一个地方,就是当使用了这个全局宏定义之后,发现可以有个类NSArray+MASAdditions.h,看了之后发现可以self.buttonViews = raiseButton

5、, lowerButton, centerButton ;/ 之后可以在updateConstraints 方法中- (void)updateConstraints self.buttonViews updateConstraints:(MASConstraintMaker *make) make.baseline.equalTo(self.mas_centerY).with.offset(self.offset); ; super updateConstraints; 动态修改视图约束:/ 创建视图约束blueView mas_makeConstraints:(MASConstraintMa

6、ker *make) self.animatableConstraint = make.edges.equalTo(superview).insets(paddingInsets).priorityLow();/ 更改约束 (另一处方法中)UIEdgeInsets paddingInsets = UIEdgeInsetsMake(padding, padding, padding, padding);self.animatableConstraint.insets = paddingInsets;self layoutIfNeeded;debug模式:/ 对某个view添加key值greenV

7、iew.mas_key = greenView;/ 或者如下顺序MASAttachKeys(greenView, redView, blueView, superview);/ 同样的对每条约束亦可以添加keymake.height.greaterThanOrEqualTo(5000).key(ConstantConstraint);preferredMaxLayoutWidth: 多行label的约束问题/ 已经确认好了位置/ 在layoutSubviews中确认label的preferredMaxLayoutWidth值- (void)layoutSubviews super layout

8、Subviews; / 你必须在 super layoutSubviews 调用之后,longLabel的frame有值之后设置preferredMaxLayoutWidth self.longLabel.preferredMaxLayoutWidth = self.frame.size.width-100; / 设置preferredLayoutWidth后,需要重新布局 super layoutSubviews;scrollView使用约束的问题:原理通过一个contentView来约束scrollView的contentSize大小,也就是说以子控件的约束条件,来控制父视图的大小/ 1.

9、 控制scrollView大小(显示区域)self.scrollView makeConstraints:(MASConstraintMaker *make) make.edges.equalTo(self.view);/ 2. 添加一个contentView到scrollView,并且添加好约束条件contentView makeConstraints:(MASConstraintMaker *make) make.edges.equalTo(self.scrollView); / 注意到此处的宽度约束条件,这个宽度的约束条件是比添加项 make.width.equalTo(self.scr

10、ollView);/ 3. 对contentView的子控件做好约束,达到可以控制contentView的大小新方法:2个或2个以上的控件等间隔排序/* * 多个控件固定间隔的等间隔排列,变化的是控件的长度或者宽度值 * * param axisType 轴线方向 * param fixedSpacing 间隔大小 * param leadSpacing 头部间隔 * param tailSpacing 尾部间隔 */- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixe

11、dSpacing l eadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;/* * 多个固定大小的控件的等间隔排列,变化的是间隔的空隙 * * param axisType 轴线方向 * param fixedItemLength 每个控件的固定长度或者宽度值 * param leadSpacing 头部间隔 * param tailSpacing 尾部间隔 */- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength

12、:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;使用方法很简单,因为它是NSArray的类扩展:/ 创建水平排列图标 arr中放置了2个或连个以上的初始化后的控件/ alongAxis 轴线方向 固定间隔 头部间隔 尾部间隔arr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedSpacing:20 leadSpacing:5 tailSpacing:5;arr mas_makeConst

13、raints:(MASConstraintMaker *make) make.top.equalTo(60); make.height.equalTo(60);2. 注意事项约束视图对象只有在被addSubview之后,才能给视图添加约束当你的所有约束都在 updateConstraints 内调用的时候,你就需要在此调用此方法,因为 updateConstraints方法是需要触发的/ 调用在view 内部,而不是viewcontroller+ (BOOL)requiresConstraintBasedLayout return YES;/* * 苹果推荐 约束 增加和修改 放在此方法种 *

14、/- (void)updateConstraints self.growingButton updateConstraints:(MASConstraintMaker *make) make.center.equalTo(self); make.width.equalTo(self.buttonSize.width).priorityLow(); make.height.equalTo(self.buttonSize.height).priorityLow(); make.width.lessThanOrEqualTo(self); make.height.lessThanOrEqualTo(

15、self); ; /最后记得回调super方法 super updateConstraints;如果想要约束变换之后实现动画效果,则需要执行如下操作/ 通知需要更新约束,但是不立即执行self setNeedsUpdateConstraints;/ 立即更新约束,以执行动态变换/ update constraints now so we can animate the changeself updateConstraintsIfNeeded;/ 执行动画效果, 设置动画时间UIView animateWithDuration:0.4 animations: self layoutIfNeeded;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1