zoukankan      html  css  js  c++  java
  • Autolayout(VFL)自动适配

      1 #import "ViewController.h"
      2 
      3 @interface ViewController ()
      4 
      5 @end
      6 
      7 @implementation ViewController
      8 
      9 - (void)viewDidLoad {
     10     [super viewDidLoad];
     11     
     12     [self fun5];
     13     
     14 }
     15 
     16 -(void)fun1{
     17     //注意使用VFL,不用设置视图的frame
     18     UIView *view = [[UIView alloc] init];
     19     view.backgroundColor = [UIColor brownColor];
     20     [self.view addSubview:view];
     21     
     22     view.translatesAutoresizingMaskIntoConstraints = NO;//注意,要想使约束条件起作用,必须将此属性设置为no
     23     
     24     /*
     25      VFL相关的标识符
     26      H:代表水平方向
     27      V:代表垂直方向
     28      |代表父视图
     29      - 代表距离 例(H:|-20-)表示距离父视图左侧20像素
     30      []代表子视图相关属性
     31      */
     32     
     33     //对子视图View进行约束设置,format表示要设置的约束语句,在本句中意思为:view距离父视图左侧30像素,距离父视图右侧20像素(如果没设置具体的数字,且写了-)
     34     //options代表对其方式,默认写0就行
     35     //metrics 这里是一个字典,当在format中使用了动态数据比如上现这句:@"H:|-[button(==width)]-|",表示这个button的宽度为width,那么这个参数去哪里找呢?就是在这个字典里面找到key对就的值,如果没有找到这个值,app会crash
     36     //views 代表约束条件中所涉及的所有视图(父视图除外)
     37     NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-30-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     38     
     39     NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     40     
     41     [self.view addConstraints:arr];
     42     [self.view addConstraints:arr1];
     43 
     44 }
     45 
     46 -(void)fun2{
     47     UIView *view = [[UIView alloc] init];
     48     view.backgroundColor = [UIColor grayColor];
     49     [self.view addSubview:view];
     50     
     51     view.translatesAutoresizingMaskIntoConstraints =  NO;
     52     //[view(>=200)]  表示给view设置尺寸,此时小括号里的关系运算符只能是 == <= >=,注意,改尺寸的值不要与约束冲突,==:约束可以不写,简写成H:[view(==200)]    >=:当左右距离只设置了一个或者都未设置,视图的尺寸为最小值,如果两个都设置时,view 的尺寸为屏幕宽度减去左右距离,此时要保证减后的值>=尺寸最小值
     53     
     54     NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view(>=200)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     55     
     56      NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     57     [self.view addConstraints:arr1];
     58     [self.view addConstraints:arr];
     59     
     60 }
     61 
     62 -(void)fun3{
     63     UIView *view = [[UIView alloc] init];
     64     view.backgroundColor = [UIColor grayColor];
     65     [self.view addSubview:view];
     66     
     67     view.translatesAutoresizingMaskIntoConstraints =  NO;
     68     
     69     CGFloat width = 200;
     70     
     71     //当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
     72     NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options:0 metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@30} views:NSDictionaryOfVariableBindings(view)];
     73     
     74     NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     75     [self.view addConstraints:arr1];
     76     [self.view addConstraints:arr];
     77     
     78 }
     79 
     80 -(void)fun4{
     81     UIView *view = [[UIView alloc] init];
     82     view.backgroundColor = [UIColor grayColor];
     83     [self.view addSubview:view];
     84     
     85     view.translatesAutoresizingMaskIntoConstraints =  NO;
     86     
     87     CGFloat width = 200;
     88     
     89     //当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
     90     NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options:0 metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@30} views:NSDictionaryOfVariableBindings(view)];
     91     
     92     NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)];
     93     [self.view addConstraints:arr1];
     94     [self.view addConstraints:arr];
     95     
     96     
     97     UIView *view1 = [[UIView alloc] init];
     98     view1.backgroundColor = [UIColor purpleColor];
     99     [self.view addSubview:view1];
    100     
    101     view1.translatesAutoresizingMaskIntoConstraints = NO;
    102     
    103     //[view1(view)] 代表view1和view某个方向尺寸相同
    104     NSArray *arr2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view1(view)]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view1,view)];
    105     
    106     //V:[view]-[view1]-20-|:子视图view1垂直方向距离平级子视图view 8像素(默认)
    107     NSArray *arr3 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-[view1]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view,view1)];
    108     [self.view addConstraints:arr2];
    109     [self.view addConstraints:arr3];
    110     
    111     
    112 }
    113 
    114 //用VFL实现label自适应
    115 -(void)fun5{
    116     UILabel *label = [[UILabel alloc] init];
    117     label.backgroundColor = [UIColor grayColor];
    118     label.numberOfLines = 0;
    119     label.lineBreakMode = NSLineBreakByCharWrapping;
    120     label.text = @"hiwehfdiuwehdiowqhdoiwehjdoiuwehdiouwhediuwheioudhewiuodhwehoihiuhiuhiuhiluhiuhiuhiuhihuhuuhhuh";
    121     [self.view addSubview:label];
    122     label.translatesAutoresizingMaskIntoConstraints = NO;
    123     
    124     NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(label)];
    125     
    126     NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(label)];
    127     
    128     [self.view addConstraints:arr];
    129     [self.view addConstraints:arr1];
    130 }
    131 
    132 - (void)didReceiveMemoryWarning {
    133     [super didReceiveMemoryWarning];
    134     // Dispose of any resources that can be recreated.
    135 }
    136 
    137 @end
  • 相关阅读:
    2016.07.13-map的使用(以leetcode1-Two Sum为例)
    2016.6.26——Maximum Depth of Binary Tree
    centos7下docker发布第一个微服务应用(Eureka)
    centos7下快速安装Nginx服务器
    java队列Queue及阻塞队列
    JConsole连接远程linux服务器配置
    mysql时间与字符串之间相互转换
    Tomcat启动报错:org.apache.catalina.LifecycleException: Failed to start component...java.util.zip.ZipException: error in opening zip file
    java post请求的表单提交和json提交简单小结
    wagon-maven-plugin实现自动打包部署到服务器
  • 原文地址:https://www.cnblogs.com/hanweifeng/p/5190140.html
Copyright © 2011-2022 走看看