IOS VFL屏幕自适应
-(void)fun1{
//注意使用VFL,不用设置视图的frame
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor brownColor];
[self.view addSubview:view];
view.translatesAutoresizingMaskIntoConstraints = NO;//注意,要想使约束条件起作用,必须将此属性设置为no
/*
VFL相关的标识符
H:代表水平方向
V:代表垂直方向
|代表父视图
- 代表距离 例(H:|-20-)表示距离父视图左侧20像素
[]代表子视图相关属性
*/
//对子视图View进行约束设置,format表示要设置的约束语句,在本句中意思为:view距离父视图左侧30像素,距离父视图右侧20像素(如果没设置具体的数字,且写了-)
//options代表对其方式,默认写0就行
//metrics 这里是一个字典,当在format中使用了动态数据比如上现这句:@"H:|-[button(==width)]-|",表示这个button的宽度为width,那么这个参数去哪里找呢?就是在这个字典里面找到key对应的值,如果没有找到这个值,app会crash
//views 代表约束条件中所涉及的所有视图(父视图除外)
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-30-[view]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
/*这里用到了一个系统宏定义,NSDictionaryOfVariableBindings(),其作用是生成一个词典,key的名字和对象的标识符相同,以上述为例,生成的词典形式就是{"self.view":self.view,@"_view3":_view3,...},这个词典应当包含需要自动布局的父视图和所有的子视图,
*/
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr];
[self.view addConstraints:arr1];
}
-(void)fun2{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view];
view.translatesAutoresizingMaskIntoConstraints = NO;
//[view(>=200)] 表示给view设置尺寸,此时小括号里的关系运算符只能是 == <= >=,注意,改尺寸的值不要与约束冲突,==:约束可以不写,简写成H:[view(==200)] >=:当左右距离只设置了一个或者都未设置,视图的尺寸为最小值,如果两个都设置时,view 的尺寸为屏幕宽度减去左右距离,此时要保证减后的值>=尺寸最小值
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view(>=200)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr];
}
-(void)fun3{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view];
view.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat width = ;
//当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options: metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@} views:NSDictionaryOfVariableBindings(view)];
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr];
}
-(void)fun4{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view];
view.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat width = ;
//当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options: metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@} views:NSDictionaryOfVariableBindings(view)];
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr];
UIView *view1 = [[UIView alloc] init];
view1.backgroundColor = [UIColor purpleColor];
[self.view addSubview:view1];
view1.translatesAutoresizingMaskIntoConstraints = NO;
//[view1(view)] 代表view1和view某个方向尺寸相同
NSArray *arr2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view1(view)]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view1,view)];
//V:[view]-[view1]-20-|:子视图view1垂直方向距离平级子视图view 8像素(默认)
NSArray *arr3 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-[view1]-20-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view,view1)];
[self.view addConstraints:arr2];
[self.view addConstraints:arr3];
}
//用VFL实现label自适应
-(void)fun5{
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor grayColor];
label.numberOfLines = ;
label.lineBreakMode = NSLineBreakByCharWrapping;
label.text = @"hiwehfdiuwehdiowqhdoiwehjdoiuwehdiouwhediuwheioudhewiuodhwehoihiuhiuhiuhiluhiuhiuhiuhihuhuuhhuh";
[self.view addSubview:label];
label.translatesAutoresizingMaskIntoConstraints = NO;
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(label)];
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label]" options: metrics:nil views:NSDictionaryOfVariableBindings(label)];
[self.view addConstraints:arr];
[self.view addConstraints:arr1];
}
IOS VFL屏幕自适应的更多相关文章
- 【Cocos2d-x 3.x】屏幕自适应匹配
在进行游戏开发时, 由于市场上的Android移动设备的分辨率有很多种,而且IOS移动设备的分辨率也不相同,为了能让手游能在90%以上的移动设备较为完美的运行,因此需要考虑屏幕的自适应问题,让一套资源 ...
- ios开发屏幕问题
1. 程序要要支持Iphone 和 ipad,所以首先必需创建一通用程序,这一操作只要在创建程序时在 devices那栏上勾选universal即可,完成后会发现有两个.xib文件,但只有一个view ...
- iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...
- [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景
我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...
- 4种必须知道的Android屏幕自适应解决方案
文章来源:http://blog.csdn.net/shimiso/article/details/19166167 demo下载:http://www.eoeandroid.com/forum.ph ...
- NGUI屏幕自适应
NGUI确实是非常棒的一个做界面的插件,比起U3D自带的GUI要好很多,当然也有一些不好之处,毕竟什么都不可能那么完美. 最近在用Unity写游戏使用NGUI遇到了一个很多人都在遇到的问题,就是关于屏 ...
- iOS实现屏幕旋转
iOS实现屏幕旋转有两种方式 1. 应用本身支持 2. 手动旋转UIView (这种方式我没找到旋转 系统控件的方法 如:键盘.导航.UIAlertView) 如果你只是要把竖屏的播放器,做成支持横屏 ...
- 解决iOS设备屏幕切换时页面造成的问题
环境:IOS6~7 Safari 问题:iOS设备屏幕切换时可能会造成屏幕变大,出现左右间距等问题 解决方法: 头部加入<meta name = "viewport" con ...
- .Net语言 APP开发平台——Smobiler学习日志:开发APP时,如何快速地实现屏幕自适应
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.属性介绍 设置控件在客户端屏幕可见并超出客户端屏幕时,是否自动调节高度以适应屏幕高 ...
随机推荐
- viso图插入Word中大片空白解决办法
按住CTRL-->将鼠标指向绘图页边缘-->指针变为移动符号(双向箭头)-->按下左键修改绘图页大小.
- SqlServer——批量插入数据
像Major表里面批量插入数据演示: 代码如下: Declare @I int Set @I= Begin Tran InsertData: Insert into Major values(@I,' ...
- auto refresh iframe
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
1,实现方法一:通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 <LinearLayout xmlns:android=&q ...
- AndroidStudio修改项目名称
项目名称修改了,想修改Android Studio 中 project的名字 右键project 的名字,refactor - rename ,填写好新名字后修改,被提示 “can’t rename ...
- 关于 HTTP 请求头的内容
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源传 ...
- 远程登录服务器执行cmd的Python脚本
import paramiko,os,sys ip = raw_input("input ip address :>>>") password = raw_inp ...
- java-正则表达式过滤字符串中的html标签
案例 import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: HTML相关的正 ...
- Value和Object的区别
在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有. 1,先看看setV ...
- 绘制图形与3D增强技巧(四)----多边形图元及其点画模式
1.四边形图元 glBegin(GL_QUADS); glend(); 2.通用多边形 glBegin(GL_POLYGONS); glend(); 3.多边形点画模式 glenable(GL_POL ...