用代码创建约束,实现屏幕适配
2016-07-14 08:02
417 查看
//
// ViewController.m
// 1_AutoLayout(code)
//
// Created by mac on 16/7/13.
// Copyright © 2016年 mac. All rights reserved.
//
#import "ViewController.h"
@interface
ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
//1.调用创建视图的方法
[selfcreateView];
}
//创建视图的方法
- (void) createView {
//1.创建视图1(蓝色)
//a) 创建
UIView *cyanView = [[UIViewalloc]init];
//b) 背景颜色
cyanView.backgroundColor = [UIColorcyanColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
cyanView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:cyanView];
//2.创建视图2(绿色)
//a) 创建
UIView *greenView = [[UIViewalloc]init];
//b) 背景颜色
greenView.backgroundColor = [UIColorgreenColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
greenView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:greenView];
//2.创建视图3(红色)
//a) 创建
UIView *magentaView = [[UIViewalloc]init];
//b) 背景颜色
magentaView.backgroundColor = [UIColormagentaColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
magentaView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:magentaView];
//2.编写VFL语句
//a)cyanView和greenView的水平约束
NSString *hVFL =@"H:|-Space-[cyanView(==greenView)]-Between-[greenView]-Space-|";
//b) magentaView的水平约束
NSString *hBottom =@"H:|-Space-[magentaView]-Space-|";
//c) cyanView和magentaView的垂直约束
NSString *vLeft =@"V:|-Space-[cyanView(==magentaView)]-Between-[magentaView]-Space-|";
//d) greenView和magentaView的垂直约束
NSString *vRight =@"V:|-Space-[greenView]-Between-[magentaView]-Space-|";
//e) 将约束条件和视图,放入字典中
NSDictionary *metrics =@{@"Space":@20,@"Between":@20};
NSDictionary *views1 =NSDictionaryOfVariableBindings(cyanView,greenView);
NSDictionary *views2 =NSDictionaryOfVariableBindings(magentaView);
NSDictionary *views3 =NSDictionaryOfVariableBindings(cyanView,magentaView);
NSDictionary *views4 =NSDictionaryOfVariableBindings(greenView,magentaView);
//3.创建约束
//a) 两个水平约束
NSArray *hVFLContraints = [NSLayoutConstraint constraintsWithVisualFormat:hVFLoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views1];
NSArray *hBottomContraints = [NSLayoutConstraint constraintsWithVisualFormat:hBottomoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views2];
//b) 两个垂直约束
NSArray *vLeftContraints = [NSLayoutConstraint constraintsWithVisualFormat:vLeftoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views3];
NSArray *vRightContraints = [NSLayoutConstraint constraintsWithVisualFormat:vRightoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views4];
//4.将约束全部添加到父视图
a632
[self.viewaddConstraints:hVFLContraints];
[self.viewaddConstraints:hBottomContraints];
[self.viewaddConstraints:vLeftContraints];
[self.viewaddConstraints:vRightContraints];
}
@end
// ViewController.m
// 1_AutoLayout(code)
//
// Created by mac on 16/7/13.
// Copyright © 2016年 mac. All rights reserved.
//
#import "ViewController.h"
@interface
ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
//1.调用创建视图的方法
[selfcreateView];
}
//创建视图的方法
- (void) createView {
//1.创建视图1(蓝色)
//a) 创建
UIView *cyanView = [[UIViewalloc]init];
//b) 背景颜色
cyanView.backgroundColor = [UIColorcyanColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
cyanView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:cyanView];
//2.创建视图2(绿色)
//a) 创建
UIView *greenView = [[UIViewalloc]init];
//b) 背景颜色
greenView.backgroundColor = [UIColorgreenColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
greenView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:greenView];
//2.创建视图3(红色)
//a) 创建
UIView *magentaView = [[UIViewalloc]init];
//b) 背景颜色
magentaView.backgroundColor = [UIColormagentaColor];
//c) 取消默认的Autoresizing自动添加约束,避免冲突
magentaView.translatesAutoresizingMaskIntoConstraints =NO;
//d) 添加到视图
[self.viewaddSubview:magentaView];
//2.编写VFL语句
//a)cyanView和greenView的水平约束
NSString *hVFL =@"H:|-Space-[cyanView(==greenView)]-Between-[greenView]-Space-|";
//b) magentaView的水平约束
NSString *hBottom =@"H:|-Space-[magentaView]-Space-|";
//c) cyanView和magentaView的垂直约束
NSString *vLeft =@"V:|-Space-[cyanView(==magentaView)]-Between-[magentaView]-Space-|";
//d) greenView和magentaView的垂直约束
NSString *vRight =@"V:|-Space-[greenView]-Between-[magentaView]-Space-|";
//e) 将约束条件和视图,放入字典中
NSDictionary *metrics =@{@"Space":@20,@"Between":@20};
NSDictionary *views1 =NSDictionaryOfVariableBindings(cyanView,greenView);
NSDictionary *views2 =NSDictionaryOfVariableBindings(magentaView);
NSDictionary *views3 =NSDictionaryOfVariableBindings(cyanView,magentaView);
NSDictionary *views4 =NSDictionaryOfVariableBindings(greenView,magentaView);
//3.创建约束
//a) 两个水平约束
NSArray *hVFLContraints = [NSLayoutConstraint constraintsWithVisualFormat:hVFLoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views1];
NSArray *hBottomContraints = [NSLayoutConstraint constraintsWithVisualFormat:hBottomoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views2];
//b) 两个垂直约束
NSArray *vLeftContraints = [NSLayoutConstraint constraintsWithVisualFormat:vLeftoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views3];
NSArray *vRightContraints = [NSLayoutConstraint constraintsWithVisualFormat:vRightoptions:NSLayoutFormatDirectionLeadingToTrailingmetrics:metricsviews:views4];
//4.将约束全部添加到父视图
a632
[self.viewaddConstraints:hVFLContraints];
[self.viewaddConstraints:hBottomContraints];
[self.viewaddConstraints:vLeftContraints];
[self.viewaddConstraints:vRightContraints];
}
@end
相关文章推荐
- IOS 开发-UI初级 (一)
- 【iOS】巧用 LLVM 特性: Objective-C Class Properties 解耦
- 【iOS学习】 视频添加动效水印步骤简介
- iOS Xcode9 封装生成.framework
- 在iOS中如何正确的实现行间距与行高
- iOS动画-扩散波纹效果
- 神气的 iOS 打包
- iOS开发之登录与访客
- iOS 屏幕旋转问题总结
- 【iOS】Moya网络层 + ObjectMapper数据转模型
- 程序员面试闪充--iOS密码学
- 【iOS学习】使用 Xcode 开发 Clang 插件
- iOS layoutMargins 的坑:一个活久见的 bug
- iOS 中关于列表滚动流畅方案的一些探讨
- 在iOS中绘制录音音频波形图
- 【iOS】Carthage的使用方法,顺带CocoaPods
- iOS网络层详解和优化
- 【iOS学习】大型高并发与高可用的三层缓存架构总结
- iOS内存管理(MRC、ARC)深入浅出
- 【iOS】Moya网络抽象层