当前位置: 首页 > news >正文

湛江网站建设方案服务/友链交换网站源码

湛江网站建设方案服务,友链交换网站源码,如何做电商创业项目,wordpress 后台没有菜单关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发-VFL(Visual format language)和Autolayout。VFL不复杂&#…

关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发-VFL(Visual format language)和Autolayout。VFL不复杂,理解起来很容易,实际开发中用的特别熟还好,要是第一次看估计要花点功夫才能搞定。Masonry算是VFL的简化版,用的人比较多,之前项目中用过一次,对手动写页面的开发来说算是福利。

基础知识

首先我们看一个常见的问题将一个子View放在的UIViewController的某个位置,通过设置边距来实现,效果如下:

如果通过VFL我们代码会是这样的:

UIView *superview = self.view;

UIView *view1 = [[UIView alloc] init];

view1.translatesAutoresizingMaskIntoConstraints = NO;

view1.backgroundColor = [UIColor redColor];

[superview addSubview:view1];

UIEdgeInsets padding = UIEdgeInsetsMake(200, 50, 200, 50);

[superview addConstraints:@[

//约束

[NSLayoutConstraint constraintWithItem:view1

attribute:NSLayoutAttributeTop

relatedBy:NSLayoutRelationEqual

toItem:superview

attribute:NSLayoutAttributeTop

multiplier:1.0

constant:padding.top],

[NSLayoutConstraint constraintWithItem:view1

attribute:NSLayoutAttributeLeft

relatedBy:NSLayoutRelationEqual

toItem:superview

attribute:NSLayoutAttributeLeft

multiplier:1.0

constant:padding.left],

[NSLayoutConstraint constraintWithItem:view1

attribute:NSLayoutAttributeBottom

relatedBy:NSLayoutRelationEqual

toItem:superview

attribute:NSLayoutAttributeBottom

multiplier:1.0

constant:-padding.bottom],

[NSLayoutConstraint constraintWithItem:view1

attribute:NSLayoutAttributeRight

relatedBy:NSLayoutRelationEqual

toItem:superview

attribute:NSLayoutAttributeRight

multiplier:1

constant:-padding.right],

]];

只是简单的设置了一个边距,如果视图的关系比较复杂,维护起来会是一个很痛苦的事情,我们看一下Masonry是如何实现的,导入Masonry.h头文件,约束的代码:

UIView *childView=[UIView new];

[childView setBackgroundColor:[UIColor redColor]];

//先将子View加入在父视图中

[self.view addSubview:childView];

__weak typeof(self) weakSelf = self;

UIEdgeInsets padding = UIEdgeInsetsMake(200, 50, 200, 50);

[childView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(weakSelf.view).with.insets(padding);

}];

通过mas_makeConstraints设置边距有种鸟枪换炮的感觉,我们即将开启一段新的旅程,可以紧接着看下面比较实用的功能~

实用知识

1.View设置大小

UIView *childView=[UIView new];

[childView setBackgroundColor:[UIColor redColor]];

//先将子View加入在父视图中

[self.view addSubview:childView];

__weak typeof(self) weakSelf = self;

[childView mas_makeConstraints:^(MASConstraintMaker *make) {

//设置大小

make.size.mas_equalTo(CGSizeMake(100, 100));

//居中

make.center.equalTo(weakSelf.view);

}];

效果如下:

这里友情其实一个小内容,目前我们设置约束都是通过mas_makeConstraints用来创建约束,mas_updateConstraints用来更新约束,mas_remakeConstraints重置约束,清除之前的约束,保留最新的约束,如果想深入解释下,可以阅读下面的英文解释~

/**

* Creates a MASConstraintMaker with the callee view.

* Any constraints defined are added to the view or the appropriate superview once the block has finished executing

*

* @param block scope within which you can build up the constraints which you wish to apply to the view.

*

* @return Array of created MASConstraints

*/

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;

/**

* Creates a MASConstraintMaker with the callee view.

* Any constraints defined are added to the view or the appropriate superview once the block has finished executing.

* If an existing constraint exists then it will be updated instead.

*

* @param block scope within which you can build up the constraints which you wish to apply to the view.

*

* @return Array of created/updated MASConstraints

*/

- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;

/**

* Creates a MASConstraintMaker with the callee view.

* Any constraints defined are added to the view or the appropriate superview once the block has finished executing.

* All constraints previously installed for the view will be removed.

*

* @param block scope within which you can build up the constraints which you wish to apply to the view.

*

* @return Array of created/updated MASConstraints

*/

- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

2.设置高度,这里设置左右边距,因此不设置宽度,如果想单独设置width可参考高度的设置方式:

UIView *childView=[UIView new];

[childView setBackgroundColor:[UIColor greenColor]];

//先将子View加入在父视图中

[self.view addSubview:childView];

__weak typeof(self) weakSelf = self;

[childView mas_makeConstraints:^(MASConstraintMaker *make) {

//距离顶部44

make.top.equalTo(weakSelf.view.mas_top).with.offset(44);

//距离左边30

make.left.equalTo(weakSelf.view.mas_left).with.offset(30);

//距离右边30,注意是负数

make.right.equalTo(weakSelf.view.mas_right).with.offset(-30);

//高度150

make.height.mas_equalTo(@150);

}];

3.子视图之间的位置设置:

UIView *childView=[UIView new];

[childView setBackgroundColor:[UIColor greenColor]];

//先将子View加入在父视图中

[self.view addSubview:childView];

__weak typeof(self) weakSelf = self;

[childView mas_makeConstraints:^(MASConstraintMaker *make) {

//距离顶部44

make.top.equalTo(weakSelf.view.mas_top).with.offset(44);

//距离左边30

make.left.equalTo(weakSelf.view.mas_left).with.offset(30);

//距离右边30,注意是负数

make.right.equalTo(weakSelf.view.mas_right).with.offset(-30);

//高度150

make.height.mas_equalTo(@150);

}];

//地址:http://www.cnblogs.com/xiaofeixiang/

UIView *nextView=[UIView new];

[nextView setBackgroundColor:[UIColor redColor]];

[self.view addSubview:nextView];

[nextView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(childView.mas_bottom).with.offset(30);

make.right.equalTo(childView.mas_right).with.offset(-30);

make.width.mas_equalTo(@100);

make.height.mas_equalTo(@100);

}];

4.链式写法,算是一个便利的写法:

UIView *childView=[UIView new];

[childView setBackgroundColor:[UIColor greenColor]];

//先将子View加入在父视图中

[self.view addSubview:childView];

__weak typeof(self) weakSelf = self;

[childView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.and.left.mas_equalTo(weakSelf.view).with.offset(100);

make.bottom.and.right.mas_equalTo(weakSelf.view).with.offset(-100);

//第二种写法更简单,相对于就是父视图

// make.top.and.left.mas_equalTo(100);

// make.bottom.and.right.mas_equalTo(-100);

}];

UILabel *label=[UILabel new];

[label setText:@"博客园-FlyElephant"];

[label setTextColor:[UIColor redColor]];

[label setTextAlignment:NSTextAlignmentCenter];

[self.view addSubview:label];

[label mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.mas_equalTo(weakSelf.view).with.offset(10);

make.height.mas_equalTo(20);

make.right.mas_equalTo(weakSelf.view).with.offset(-10);

make.bottom.mas_equalTo(weakSelf.view).with.offset(-50);

}];

网上关于Masonry的教程很多,给的例子的也很多,这几种情况基本上满足了开发中的需求,不会有太多的出入,算是一个简易版的教程,Masonry的中属性和iOS中的属性是有对应的关系,不过因为很简单,基本上没怎么看,下图是一个对照关系:

http://www.lbrq.cn/news/1621693.html

相关文章:

  • 上海市工程信息网站/百度高级搜索首页
  • 中国建设规划采购网站/关键词全网搜索指数
  • 监控摄像头做斗鱼直播网站/企业文化案例
  • 个人网站开发技术要求/推广普通话演讲稿
  • 美女做暖暖免费网站/今日冯站长之家
  • 重庆商城网站建设公司/广告网站推荐
  • 西安网址开发 网站制作/百度合伙人答题兼职赚钱
  • flash动画制作网页/快速将网站seo
  • 优秀企业网站建设价格/代发广告平台
  • 外贸网站建设和优化/网站seo服务公司
  • 如何做网站推广页面/郑州百度推广开户
  • 网站建设饣金手指科杰十二/班级优化大师app
  • 郑州网站制作天强科技/网站流量数据分析
  • 黄岛建网站/如何去推广一个app
  • 幼儿园网站开发/惠州百度推广排名
  • 代理ip平台/武汉seo价格
  • 百度画一画/河南网站seo
  • 上海建网站服务器/郑州网络推广服务
  • 响应式网站建设信息/常见的关键词
  • 廊坊百度网站推广/seo网站分析工具
  • 深圳网站建设深icp备/百度关键词排名软件
  • 常德网站建设多少钱/线上平台怎么推广
  • 泰兴网站建设开发/如何做好推广工作
  • WordPress 插件调试/便宜的seo网络营销推广
  • 网页制作流程/seo研究中心怎么样
  • 建网站的软件优帮云/外链
  • 网站免费建站/网站自动推广软件
  • 保定手机网站制作/搜索引擎分析论文
  • 免费建设电影网站/重庆快速排名优化
  • 小说网站虚拟主机/如何搜索关键词
  • Prometheus-1--什么是Prometheus?
  • Mac安装Navicat步骤Navicat Premium for Mac v17.1.9【亲测】
  • STM32 USB HOST 驱动FT232 USB转串
  • 安宝特新闻丨Vuzix与Wyr.Ai合作推出基于M400眼镜的全新一代质检平台
  • AI大模型前沿:Muyan-TTS开源零样本语音合成技术解析
  • C语言——————学习笔记(自己看)