Autolayout布局模式

本文深入探讨了iOS应用开发中的Autolayout布局方式,从原理出发,详细阐述了如何通过约束来实现视图间的相对定位,并通过实例展示了如何在代码中应用Autolayout进行界面布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import “ViewController.h”

@interface ViewController ()

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    /*
    AutoLayout由来
    IOS6之后出现的一种新的布局方式,用于取代原先的Autosizing系统的布局方式
    Autolayout是指定视图和其父视图或者视图和其兄弟之间的关系来布局
    在Autolayout当中,我们使用约束来描述视图和视图之间的关系
    Oc专门为开发者封装了一个类NSlayoutConstraint来帮助开发者描述布局

    */

    /*
    参数的意义
    1,(id)item:约束中的两个视图对象
    2,attribute:描述视图的对齐特征
    3,relateBy:描述两个视图attribute的关系
    4,multiplier:缩放比例
    5,constant:偏移量

    视图1.属性 关系 视图2.属性*缩放比例+偏移量

    视图1.左边 ==视图2.左边*1+0;
    [NSLayoutConstraint constraintWithItem:view1 attribute:左边 relatedBy:== toItem:view2 attribute:左边 multiplier:1 constant:0]
    视图1.宽度 ==100
    [NSLayoutConstraint constraintWithItem:view1 attribute:宽度 relatedBy:== toItem:nil attribute:nil multiplier:0 constant:100]

    */
    //
    // UIView *view1 = [UIView new];
    // UIView *view2 = [UIView new];
    // UIView *view3 = [UIView new];
    // //启用Autolayout布局方式
    // view1.translatesAutoresizingMaskIntoConstraints = NO;
    // view1.backgroundColor = [UIColor greenColor];
    // view2.translatesAutoresizingMaskIntoConstraints = NO;
    // view2.backgroundColor = [UIColor redColor];
    //
    // NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1 constant:10];
    // NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:view2 attribute: NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1 constant:20];
    //
    //
    //
    // [self.view addConstraint:constraint1];
    //
    //
    //
    // [self.view addConstraint:constraint2];

    UIView *view1 = [UIView new ];
    view1.translatesAutoresizingMaskIntoConstraints = NO;
    view1.backgroundColor = [UIColor redColor];
    [self.view addSubview:view1];
    NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
    NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
    NSLayoutConstraint *constraint3 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
    NSLayoutConstraint *constraint4 = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
    [self.view addConstraint:constraint1];
    [self.view addConstraint:constraint2];
    [self.view addConstraint:constraint3];
    [self.view addConstraint:constraint4];
    

}

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值