zoukankan      html  css  js  c++  java
  • Masonry自动布局

    介绍,入门:

     http://www.cocoachina.com/ios/20141219/10702.html

    下载:

     http://code.cocoachina.com/detail/301146/%E8%87%AA%E5%8A%A8%E5%B8%83%E5%B1%80%EF%BC%8CMasonry%E4%BB%8B%E7%BB%8D%E4%B8%8E%E4%BD%BF%E7%94%A8%E5%AE%9E%E8%B7%B5%EF%BC%9A%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8BAutolayout/

     1.Masonry初体验:

    //
    //  ViewController.m
    //  MasonryTest
    //
    //  Created by apple on 15/6/22.
    //  Copyright (c) 2015年 tqh. All rights reserved.
    //

    #import "ViewController.h"
    #import "Masonry.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
        // 防止block中的循环引用
       
        [self initView4];
    }

    - (void)initView1 {
        UIButton *button = [[UIButton alloc]init];
        button.backgroundColor = [UIColor redColor];
        [self.view addSubview:button];
        
        [self Masonry:button];
    }

    //居中约束
    - (void)Masonry:(UIView *)view {
         __weak typeof (self) weakSelf = self;
        [view mas_makeConstraints:^(MASConstraintMaker *make) {
            //大小约束
            make.size.mas_equalTo(CGSizeMake(100100));
            
            //居中约束
            make.center.equalTo(weakSelf.view);
        }];
        
    }

    //固定大小,位置调整

    - (void)initView2 {
        
        UIButton * blackBtn = [UIButton new];
        blackBtn.backgroundColor = [UIColor blackColor];
        [self.view addSubview:blackBtn];
        
        [blackBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(100);
            make.left.mas_equalTo(50);
            make.size.mas_equalTo(CGSizeMake(100100));
            
        }];
        
        UIButton * redBtn = [UIButton new];
        redBtn.backgroundColor = [UIColor redColor];
        [self.view addSubview:redBtn];
        
        [redBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            //使用 and 连接
            make.size.and.top.equalTo(blackBtn);
            //添加右边距约束(这里的间距是有方向性的,左、上边距约束正数,右、下边距约束为负数)
            make.right.mas_equalTo(-50);
            
        }];
    }

    - (void)initView3 {
        // 防止block中的循环引用
        __weak typeof (self) weakSelf = self;
        UIButton * redBtn = [[UIButton alloc]init];
        redBtn.backgroundColor = [UIColor redColor];
        [self.view addSubview:redBtn];
        
        [redBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.top.and.left.mas_equalTo(20);
            make.right.mas_equalTo(-50);
    //        make.bottom.and.right.mas_equalTo(-20);
            
        }];
        
        UIButton * blueBtn = [UIButton new];
        blueBtn.backgroundColor = [UIColor blueColor];
        [self.view addSubview:blueBtn];
        
        [blueBtn mas_makeConstraints:^(MASConstraintMaker *make) {
           
            make.bottom.and.right.mas_equalTo(-20);
            //让他等于redBtn的高度
            make.height.equalTo(redBtn);
            //添加上左约束
            make.top.equalTo(redBtn.mas_bottom).offset(0);
            make.left.equalTo(weakSelf.view.mas_centerX).offset(-40);
            
        }];
       
    }

    - (void)initView4 {
        // 左边的按键
        UIButton * firstBtn = [[UIButton alloc]init];
        firstBtn.backgroundColor = [UIColor redColor];
        [self.view addSubview:firstBtn];
        
        // 右边的按键
        UIButton * secondBtn = [[UIButton alloc]init];
        secondBtn.backgroundColor = [UIColor blueColor];
        [self.view addSubview:secondBtn];
        int padding1 = 10;
        // 给左边视图添加约束
        [firstBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(100);
            make.left.mas_equalTo(20);
            make.right.equalTo(secondBtn.mas_left).with.offset(-padding1);
            
        }];
        
        // 给右边视图添加约束
        [secondBtn mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.mas_equalTo(100);
            make.right.mas_equalTo(-20);
            make.width.equalTo(firstBtn);
        }];
    }

    - (void)initView4Test {
        for (int i = 0; i < 4; i ++) {

            UIView * firstBtn = [[UIView alloc]init];
            firstBtn.backgroundColor = [UIColor redColor];
            [self.view addSubview:firstBtn];
            [firstBtn mas_makeConstraints:^(MASConstraintMaker *make) {
                make.top.mas_equalTo(100);
                make.size.mas_equalTo(CGSizeMake(5050));
                make.left.mas_equalTo(i*60);
            }];
            UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapPressed:)];
            firstBtn.tag = 10 +i;
            firstBtn.userInteractionEnabled = YES;
            [firstBtn addGestureRecognizer:tap];
        }
       
    }

    - (void)tapPressed:(UITapGestureRecognizer *)sender {
        NSInteger index = sender.view.tag;
        NSLog(@"%ld",index);
    }

    @end

     有待进一步熟悉

     补:

    自动布局动态计算cell的高度
    http://www.ifun.cc/blog/2014/02/21/dong-tai-ji-suan-uitableviewcellgao-du-xiang-jie/
    http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/

  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/hxwj/p/4592920.html
Copyright © 2011-2022 走看看