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
  • 相关阅读:
    53. Maximum Subarray
    64. Minimum Path Sum
    28. Implement strStr()
    26. Remove Duplicates from Sorted Array
    21. Merge Two Sorted Lists
    14. Longest Common Prefix
    7. Reverse Integer
    412. Fizz Buzz
    linux_修改域名(centos)
    linux_redis常用数据类型操作
  • 原文地址:https://www.cnblogs.com/hanweifeng/p/5190140.html
Copyright © 2011-2022 走看看