zoukankan      html  css  js  c++  java
  • autoLayout(相对布局)二

    //

    //  ViewController.m

    //  UI-AutoLayout.

    //

    //  Created by Bruce on 15/9/7.

    //  Copyright (c) 2015年 Bruce. All rights reserved.

    //

     

    #import "ViewController.h"

     

    @interface ViewController ()

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        [self demo5];

    }

     

    //一个视图

    - (void)demo1

    {

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

    //    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

        view.translatesAutoresizingMaskIntoConstraints = NO;

        view.backgroundColor = [UIColor redColor];

        [self.view addSubview:view];

        

    //    VFL  横向 竖向布局

    //    @"H:" 设置横向布局

    //    @"V:" 设置竖向布局

        

    //    设置横向布局 距离参照视图的左侧边距

    //    @"H:|-20-"

    //    @"H:[view]-20-"

        

    //    @"H:|-20-[view(200)]" view的宽  永远是200

    //    @"H:|-20-[view(otherView)]" view的宽  与otherView的宽相同

    //    @"H:|-20-[view(>=200)]" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200

        

    //    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与参照视图之间的间距

        

    //    视图 使用属性的时候   绑定key  需要绑定它真实的名字  _titleLable

    //    self.titleLable = _titleLable

     

        

    //    @"H:|-20-" 设置横向布局 距离父视图的左侧边距

    //    @"H:|-20-[view(>=200)]" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200

    //    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离父视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与父视图之间的间距

        

    //    竖向布局@"V:|-40-[view(>=200)]-20-|"

        

    //    使用VFL  需把视图的对象(视图) 与 他的名字(字符串) 绑定起来

        NSDictionary *views = NSDictionaryOfVariableBindings(view);

        

    //    给 self.view 和 view 添加约束

    //    addConstraints 添加约束

    //    NSLayoutConstraint 添加 具体约束的一个类

    //    + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views

    //    format:VFL

    //    opts:同意按照某个方向去布局

    //    metrics:绑定的参数

    //    views:绑定视图的参数

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

        

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

    }

     

    //两个视图的布局

    - (void)demo2

    {

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

        //    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

        view.translatesAutoresizingMaskIntoConstraints = NO;

        view.backgroundColor = [UIColor redColor];

        [self.view addSubview:view];

        

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

        //    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

        view1.translatesAutoresizingMaskIntoConstraints = NO;

        view1.backgroundColor = [UIColor yellowColor];

        [self.view addSubview:view1];

        

        

        NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

        

    //    红色view的约束

    //    @"H:|-20-[view(>=200)]-20-|"

    //    @"V:|-40-[view(50)]-10-[view1]"

        

    //    黄色view1约束

    //    @"H:|-20-[view1(>=200)]-20-|"

    //    @"V:[view]-10-[view1(50)]"

        

    //    红色view横向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

    //    红色view竖向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1]" options:0 metrics:nil views:views]];

        

    //    黄色view1横向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

    //    黄色view1竖向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

    }

     

     

    //两个视图的布局 优化demo2

    - (void)demo3

    {

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

        //    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

        view.translatesAutoresizingMaskIntoConstraints = NO;

        view.backgroundColor = [UIColor redColor];

        [self.view addSubview:view];

        

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

        //    如果需要使用autoLayout   translatesAutoresizingMaskIntoConstraints 必须禁用

        view1.translatesAutoresizingMaskIntoConstraints = NO;

        view1.backgroundColor = [UIColor yellowColor];

        [self.view addSubview:view1];

        

        

        NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

        

        //    红色view的约束

        //    @"H:|-20-[view(>=200)]-20-|"

        //    @"V:|-40-[view(50)]-10-[view1]"

        

        //    黄色view1约束

        //    @"H:|-20-[view1(>=200)]-20-|"

        //    @"V:[view]-10-[view1(50)]"

        

        //    红色view横向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

        

    //    红色view 黄色view1 都在同一个父视图 而且两个视图之间 又有关系

        //    红色view 黄色view1 竖向的约束

    //    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(50)]" options:0 metrics:nil views:views]];

        

    //    红色view 黄色view1 两个视图的高度 都是50

    //    [view1(view)]

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(50)]-10-[view1(view)]" options:0 metrics:nil views:views]];

        

        //    黄色view1横向的约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

        //    黄色view1竖向的约束

    //    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

    }

     

    //再次优化 demo2

    - (void)demo4

    {

        NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor]];

        

        for (int i=0; i<2; i++) {

            

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

            view.backgroundColor = colorList[i];

            view.translatesAutoresizingMaskIntoConstraints = NO;

            view.tag = 10+i;

            [self.view addSubview:view];

            

        }

        

        UIView *redView = [self.view viewWithTag:10];

        UIView *yellowView = [self.view viewWithTag:11];

        

        NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView);

        

    //    两个视图 横向的约束

        NSArray *constraints = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=200)]-20-|"];

        

        for (NSString *VFL in constraints) {

            

            [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VFL options:0 metrics:nil views:views]];

        }

        

    //    两个视图的竖向约束

        [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[redView(50)]-10-[yellowView(redView)]" options:0 metrics:nil views:views]];

    }

     

    //三个视图

    - (void)demo5

    {

        NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]];

        

        for (int i=0; i<3; i++) {

            

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

            view.translatesAutoresizingMaskIntoConstraints = NO;

            view.backgroundColor = colorList[i];

            view.tag = 10+i;

            [self.view addSubview:view];

            

        }

        

        UIView *redView = [self.view viewWithTag:10];

        UIView *yellowView = [self.view viewWithTag:11];

        UIView *blueView = [self.view viewWithTag:12];

        

        NSDictionary *views = NSDictionaryOfVariableBindings(redView,yellowView,blueView);

        

    //    @"H:|-20-[redView>=200]-20-|"

    //    @"H:|-20-[yellowView>=100]-10-[blueView(yellowView)]-20-|"

        

        NSArray *HList = @[@"H:|-20-[redView(>=200)]-20-|",@"H:|-20-[yellowView(>=100)]-10-[blueView(yellowView)]-20-|"];

        

    //    红色视图与黄色视图竖向的关系,红色视图与蓝色视图竖向的关系

        NSArray *VList = @[@"V:|-40-[redView(50)]-10-[yellowView(redView)]",@"V:[redView]-10-[blueView(redView)]"];

        

        for (int i=0; i<VList.count; i++) {

            

            [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];

            

            [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];

            

        }

        

    }

     

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

     

    @end

     

  • 相关阅读:
    代理类和装饰类的区别
    spring mvc 处理映射的几种方式
    如何深入浅出的理解跳转方式:重定向和请求转发
    springMVC拦截配置
    ※版本管理※=>☆SVN工具=>※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]
    权力社会? 金钱社会? 透过现象看本质-让权力和金钱的力量沿着制度的河道流淌,才是社会稳定的基石
    自己封装的CMusic类 【转】
    VC++中MCI播放音频文件 【转】
    DevExpress.XtraGrid 【转】
    C# Process.Start()方法详解 [转]
  • 原文地址:https://www.cnblogs.com/wukun16/p/4883891.html
Copyright © 2011-2022 走看看