IOS Masonry自动布局
之前项目用Frame布局,这个项目登录用了VFL,后来觉得用Masonry,前天布局TableViewCell时用了下 ,觉得还不错。
#import "Masonry.h" #import "MASViewAttribute.h"
先看效果图:
#import "ReportsCell.h" //#import "Masonry.h" #import "YZPUIFormatMacros.h" #import "Global.h" static const CGFloat kIconWidth = 55.0f; static const CGFloat kIconHeight = 55.0f; @implementation ReportsCell - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { self.backgroundColor = [UIColor whiteColor]; UIView *headerView = [[UIView alloc]init]; headerView.backgroundColor = YZPColorDividingLineOutdide; [self addSubview:headerView]; [headerView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(@); make.top.equalTo(@); make.width.equalTo(@(MainWidth)); make.height.equalTo(@(YZPSpaceHSmall)); }]; UIView *topLine=[self lineView]; [headerView addSubview:topLine]; [topLine mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(headerView.top); make.left.equalTo(headerView.left); make.width.equalTo(headerView.width); make.height.equalTo(@0.5); }]; UIView *bottomLine=[self lineView]; [headerView addSubview:bottomLine]; [bottomLine mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(headerView.bottom).with.offset(-0.5); make.left.equalTo(headerView.left); make.width.equalTo(headerView.width); make.height.equalTo(@0.5); }]; _orderIdLabel=[[UILabel alloc]init]; _orderIdLabel.font = YZPFontSubhead; _orderIdLabel.textColor = YZPColorTextSubhead; [self addSubview:_orderIdLabel]; [_orderIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(headerView.bottom).with.offset(); make.left.equalTo(@); make.width.equalTo(headerView.width); make.height.equalTo(@); }]; _orderIconView=[[UIImageView alloc]init]; [self addSubview:_orderIconView]; [_orderIconView makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(@); make.top.equalTo(_orderIdLabel.bottom).with.offset(); make.width.equalTo(@(kIconWidth)); make.height.equalTo(@(kIconHeight)); }]; _orderTitleLabel=[[UILabel alloc]init]; _orderTitleLabel.font=YZPFontSubhead; _orderTitleLabel.textColor=[UIColor colorWithRed:0.141f green:0.141f blue:0.141f alpha:1.00f]; _orderTitleLabel.numberOfLines=; [self addSubview:_orderTitleLabel]; [_orderTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(_orderIconView.right).with.offset(); make.top.equalTo(_orderIconView.top).with.offset(); make.width.equalTo(@(MainWidth-)); make.height.lessThanOrEqualTo(@()); }]; _orderSpecLabel=[[UILabel alloc]init]; _orderSpecLabel.font=YZPFontExplain; _orderSpecLabel.textColor=[UIColor colorWithRed:0.400f green:0.400f blue:0.400f alpha:1.00f]; [self addSubview:_orderSpecLabel]; [_orderSpecLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(_orderTitleLabel.left); make.top.equalTo(_orderTitleLabel.bottom).offset(); make.width.equalTo(@(MainWidth-)); make.height.lessThanOrEqualTo(@()); }]; _productsCountLabel=[[UILabel alloc]init]; _productsCountLabel.font=YZPFontContent; _productsCountLabel.textAlignment=NSTextAlignmentRight; _productsCountLabel.textColor=[UIColor colorWithRed:0.400f green:0.400f blue:0.400f alpha:1.00f]; [self addSubview:_productsCountLabel]; [_productsCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_orderTitleLabel.top); make.left.equalTo(_orderTitleLabel.right).offset(); make.right.equalTo(self.right).with.offset(-); make.height.equalTo(_orderTitleLabel.height); }]; UIView *centerLine=[self lineView]; [self addSubview:centerLine]; [centerLine mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_orderIconView.bottom).offset(); make.left.equalTo(self); make.width.equalTo(self); make.height.equalTo(@0.5); }]; _userNameLabel=[[UILabel alloc]init]; _userNameLabel.font=YZPFontExplain; _userNameLabel.textColor=YZPColorTextExplain; // _userNameLabel.numberOfLines=2; _userNameLabel.textAlignment=NSTextAlignmentLeft; [self addSubview:_userNameLabel]; [_userNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.left).with.offset(); make.top.equalTo(centerLine.bottom).offset(); make.width.lessThanOrEqualTo(@); make.height.lessThanOrEqualTo(@); }]; _userPhoneLabel=[[UILabel alloc]init]; _userPhoneLabel.font=YZPFontExplain; _userPhoneLabel.textColor=YZPColorTextExplain; _userPhoneLabel.textAlignment=NSTextAlignmentRight; [self addSubview:_userPhoneLabel]; [_userPhoneLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_userNameLabel.top); make.right.equalTo(self.right).with.offset(-); make.height.lessThanOrEqualTo(@); make.width.lessThanOrEqualTo(@); }]; _userAddressLabel=[[UILabel alloc]init]; _userAddressLabel.font=YZPFontExplain; _userAddressLabel.textColor=YZPColorTextExplain; [self addSubview:_userAddressLabel]; [_userAddressLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(_userNameLabel.bottom).with.offset(); make.left.equalTo(self.left).with.offset(); // make.bottom.equalTo(self.bottom).with.offset(-10); make.width.equalTo(self.width); make.height.lessThanOrEqualTo(@); }]; } return self; } -(UIView *)lineView { UIView *line=[[UIView alloc]init]; // line.backgroundColor=[UIColor redColor]; line.backgroundColor=[UIColor colorWithRed:0.800f green:0.800f blue:0.800f alpha:1.00f]; return line; } - (void)awakeFromNib { // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } @end
IOS Masonry自动布局的更多相关文章
- iOS masonry 不规则tagView布局 并自适应高度
在搜索页面经常会有不规则的tag出现,这种tagView要有点击事件,单个tagView可以设置文字颜色,宽度不固定根据内容自适应,高度固定,数量不固定.总高度就不固定.最近对于masonry的使用又 ...
- iOS AutoLayout自动布局&Masonry介绍与使用实践
Masonry介绍与使用实践:快速上手Autolayout http://www.cnblogs.com/xiaofeixiang/p/5127825.html http://www.cocoachi ...
- iOS SnapKit自动布局使用详解(Swift版Masonry)
对于自动布局: 我们在 StoryBoard 中可以使用约束实现,简单明了,但如果用纯代码来设置约束就很麻烦了 OC里面,我们常用的有Masonry,SDAutoLayout Swift里,我们有Sn ...
- ios - masonry第三方库使用自动布局(参考:http://www.cocoachina.com/ios/20141219/10702.html)
#import "ViewController.h" #import "Masonry.h" #define kWeakSelf(weakSelf) __wea ...
- 【iOS】Masonry 自动布局 MASViewConstraint.m:207 错误
问题详情: Assertion failure 报错原因: make.right.equalTo([_imageView superview]).right.with.offset(-); make. ...
- Masonry自动布局
介绍,入门: http://www.cocoachina.com/ios/20141219/10702.html 下载: http://code.cocoachina.com/detail/30114 ...
- iOS开发-自动布局篇:史上最牛的自动布局教学!
转载自:http://www.jianshu.com/p/f6cf9ef451d9 本文我们将提到: aotulayout(手码) VFL aotulayout(Xib) Masonry(第三方框架) ...
- iOS masonry九宫格 单行 多行布局
Masonry是个好东西,在当前尺寸各异的iOS开发适配中发挥着至关重要的作用,由于项目中Masonry布局用的比较多,对于UI布局也有了一些自己的理解,经常会有人问道Masonry布局九宫格要怎么布 ...
- Masonry自动布局使用
Masonry是一个轻量级的布局框架,采用更好的语法封装自动布局,它有自己的布局DSL.简洁明了并具有高可读性 而且同时支持 iOS 和 Max OS X. 下载 NSLayoutConstraint ...
随机推荐
- 记那些年在asp.net mvc上挖过的坑
表现: IDE是vs2017.是在 A 控制器方法断点后,却怎么也运行不到那个位置,但是又正常返回页面.该方法位于web项目引用的控制器类库上的一个控制器,试过它隔壁的控制器,一切正常. 但每次访问该 ...
- (zxing.net)一维码Code 93的简介、实现与解码
一.简介 一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码.它没有自校验功能,为了确保数据安全性,采用 ...
- zTree设置选中节点之后出现重复节点
1.用户离开页面时最后一次点击的节点信息我会保存到数据库. 2.用户打开页面时默认选中上一次离开时选中的节点. 现在发现在设置选中节点之后,会出现重复的节点(重复现象偶尔出现). 以下是代码: var ...
- https经过ngxin在web服务器收到http请求
一. 问题描述: nginx代理nexus的时候页面不全,部分https地址自动转成http了,使用方案四解决的 浏览器输入https://www.mysite.com,后台通过request.get ...
- “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Wannafly挑战赛26题解
为啥混进了几道不是魔禁的题--出题人太不敬业了-- 传送门 \(A\) 御坂网络 为啥没有番外个体和整体意志呢 暴力模拟就好了,这个要是都打错我干脆滚回去学文化课算了 //minamoto #incl ...
- Service由浅到深——AIDL的使用方式
前言 最近有很多朋友问我这个AIDL怎么用,也许由于是工作性质的原因,很多人都没有使用过aidl,所以和他们讲解完以后,感觉对方也是半懂不懂的,所以今天我就从浅到深的分析一下这个aidl具体是怎么用的 ...
- 如何查看mysql 默认端口号和修改端口号
http://blog.itpub.net/26148431/viewspace-1466379/ 1,登录mysql 2,使用命令show global variables like 'port'; ...
- httpclient4.5 https请求 忽略身份验证
import org.apache.commons.collections.MapUtils; import org.apache.http.*; import org.apache.http.cli ...
- 私有成员的设置和访问方式——setter和getter
在定义类时,为了保证类中成员数据安全性及的封装性,防止成员数据值被任意修改,通常将类中成员属性用private进行修饰. 被private修改的成员属性,只能在类中访问,跳出本类后,就无法直接访问. ...