美文网首页
iOS屏幕适配

iOS屏幕适配

作者: 程一刀 | 来源:发表于2019-02-25 17:35 被阅读0次

    1.根据屏幕宽高写控件frame
    2.Autoresizing的使用,适用于父子布局

    /**
     UIViewAutoresizingNone
     不会随父视图的改变而改变
     UIViewAutoresizingFlexibleLeftMargin
     自动调整view与父视图左边距,以保证右边距不变
     UIViewAutoresizingFlexibleWidth
     自动调整view的宽度,保证左边距和右边距不变
     UIViewAutoresizingFlexibleRightMargin
     自动调整view与父视图右边距,以保证左边距不变
     UIViewAutoresizingFlexibleTopMargin
     自动调整view与父视图上边距,以保证下边距不变
     UIViewAutoresizingFlexibleHeight
      自动调整view的高度,以保证上边距和下边距不变
     UIViewAutoresizingFlexibleBottomMargin
     自动调整view与父视图的下边距,以保证上边距不变
     **/
    -(void)testAutoresizing{
        //    1.创建蓝色的视图
        UIView *blueView = [[UIView alloc]init];
        blueView.frame =  CGRectMake(0, 0, 200, 200);
        blueView.backgroundColor = [UIColor blueColor];
        [self.view addSubview:blueView];
        self.blueView = blueView;
        //    2.创建红色的视图
        UIView *redView = [[UIView alloc]init];
        CGFloat redViewH = 30;
        redView.frame = CGRectMake(0, 50, 200, 100);
        redView.backgroundColor = [UIColor redColor];
        [blueView addSubview:redView];
        redView.autoresizingMask = UIViewAutoresizingFlexibleHeight;//UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin;
    }
    

    3.AutoLayout的使用

    #pragma mark AutoLayout 使用
    -(void)autolayoutTest{
        //    创建一个蓝色的View视图
        UIView*blueView=[[UIView alloc]init];
        blueView.backgroundColor=[UIColor  blueColor];
        [self.view addSubview:blueView];
        
        //去掉所以可能添加约束的控件的autoresizing属性
        self.view.translatesAutoresizingMaskIntoConstraints=NO;
        blueView.translatesAutoresizingMaskIntoConstraints=NO;
        
        //设置left
        NSLayoutConstraint *leftBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
        //设置right
        NSLayoutConstraint *rightBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
        //设置top
        NSLayoutConstraint *topBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:30];
        //设置height
        NSLayoutConstraint *heighBlue=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:30];
        //添加到对应参照控件上
        [self.view addConstraints:@[leftBlue,rightBlue,topBlue]];
        [blueView addConstraint:heighBlue];
    //
        //红色view
        UIView *redView = [UIView new];
        redView.backgroundColor = [UIColor redColor];
        redView.translatesAutoresizingMaskIntoConstraints = NO;
        [self.view addSubview:redView];
        //设置left
        NSLayoutConstraint *leftBlue1=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
        //设置right
        NSLayoutConstraint *rightBlue1=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
        //设置top
        NSLayoutConstraint *topBlue1=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeTop multiplier:2.0 constant:0];
        //设置height
        NSLayoutConstraint *heighBlue1=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:30];
        //添加到对应参照控件上
        [self.view addConstraints:@[leftBlue1,rightBlue1,topBlue1]];
        [redView addConstraint:heighBlue1];
    }
    
    

    4.Masonry使用
    mas_makeConstraints 是给view添加约束,约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加过约束后可以有修正,修正有offset(位移)修正和multipliedBy(倍率)修正。
    语法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍数和位移修正。
    注意点1: 使用 mas_makeConstraints方法的元素必须事先添加到父元素的中,例如[self.view addSubview:view];
    注意点2: masequalTo 和 equalTo 区别:masequalTo 比equalTo多了类型转换操作,一般来说,大多数时候两个方法都是 通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如 make.left.and.right.equalTo(self.view);
    注意点3: 注意到方法with和and,这连个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性 。make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一样的,但是明显的加了and方法的语句可读性 更好点。

        UIView *greenView = UIView.new;
        greenView.backgroundColor = UIColor.greenColor;
        greenView.layer.borderColor = UIColor.blackColor.CGColor;
        greenView.layer.borderWidth = 2;
        [self addSubview:greenView];
    
        UIView *redView = UIView.new;
        redView.backgroundColor = UIColor.redColor;
        redView.layer.borderColor = UIColor.blackColor.CGColor;
        redView.layer.borderWidth = 2;
        [self addSubview:redView];
    
        UIView *blueView = UIView.new;
        blueView.backgroundColor = UIColor.blueColor;
        blueView.layer.borderColor = UIColor.blackColor.CGColor;
        blueView.layer.borderWidth = 2;
        [self addSubview:blueView];
    
        UIView *superview = self;
        int padding = 10;
    
        //if you want to use Masonry without the mas_ prefix
        //define MAS_SHORTHAND before importing Masonry.h see Masonry iOS Examples-Prefix.pch
        [greenView makeConstraints:^(MASConstraintMaker *make) {
            make.top.greaterThanOrEqualTo(superview.top).offset(padding);
            make.left.equalTo(superview.left).offset(padding);
            make.bottom.equalTo(blueView.top).offset(-padding);
            make.right.equalTo(redView.left).offset(-padding);
            make.width.equalTo(redView.width);
    
            make.height.equalTo(redView.height);
            make.height.equalTo(blueView.height);
    
        }];
    
        //with is semantic and option
        [redView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(superview.mas_top).with.offset(padding); //with with
            make.left.equalTo(greenView.mas_right).offset(padding); //without with
            make.bottom.equalTo(blueView.mas_top).offset(-padding);
            make.right.equalTo(superview.mas_right).offset(-padding);
            make.width.equalTo(greenView.mas_width);
    
            make.height.equalTo(@[greenView, blueView]); //can pass array of views
        }];
    
        [blueView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(greenView.mas_bottom).offset(padding);
            make.left.equalTo(superview.mas_left).offset(padding);
            make.bottom.equalTo(superview.mas_bottom).offset(-padding);
            make.right.equalTo(superview.mas_right).offset(-padding);
            make.height.equalTo(@[greenView.mas_height, redView.mas_height]); //can pass array of attributes
        }];
    
    

    抄袭链接:https://www.cnblogs.com/GarveyCalvin/p/4165151.html

    相关文章

      网友评论

          本文标题:iOS屏幕适配

          本文链接:https://www.haomeiwen.com/subject/ygzeyqtx.html