IOS开发之手写约束

本文详细介绍了如何在iOS开发中手动添加Auto Layout约束,通过创建并添加视图,然后为这些视图定义位置和大小约束来实现精确布局。具体包括为红色视图设定左上角位置及宽高,以及为绿色视图设定相对于红色视图的位置和尺寸。

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

//

//  ViewController.m

//  02-手写约束

//

//  Created by 鹿微微鹿 on 16/5/5.

//  Copyright (c) 2016 鹿微微鹿. All rights reserved.

//


#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    //手动添加约束

    //1.必须先将需要添加约束的视图创建出来

    //并且添加到界面上

    //2.不需要设置frame

    //关闭autoresizing

    

    //1.创建一个红色视图

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

    redView.backgroundColor = [UIColor redColor];

    //关闭autoresizing

    redView.translatesAutoresizingMaskIntoConstraints = NO;

    

    //创建一个绿色视图

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

    greenView.backgroundColor = [UIColor greenColor];

    greenView.translatesAutoresizingMaskIntoConstraints = NO;

    

    

    //显示在界面上

    [self.view addSubview:redView];

    [self.view addSubview:greenView];

    

    //2.添加约束(红色视图一值显示在左上角

    //到屏幕顶部和左边的距离为50,宽高200)

    

    //top

    //红色视图的顶部 = view顶部*1 + 50

    //redView.top = self.view.top*1 + 50;

    //参数1的参数2参数3参数4的参数5 * 参数6 + 参数7

    NSLayoutConstraint *redtopConstraint = [NSLayoutConstraint

    constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:50];

    

    //left

    NSLayoutConstraint *redLeftConstraint = [NSLayoutConstraint

    constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1 constant:50];

    

    //width

    NSLayoutConstraint *redWith = [NSLayoutConstraint

    constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:0 constant:200];

    

     //height

    NSLayoutConstraint *redHeight = [NSLayoutConstraint

    constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:0 constant:200];

    

    //b.添加约束

    [self.view addConstraints:@[ redtopConstraint,redLeftConstraint]];

    [redView addConstraints:@[ redWith,redHeight]];

    

    

    //=============绿色视图的约束==============

    //左对齐

    NSLayoutConstraint *greenAlignLeft = [NSLayoutConstraint

        constraintWithItem:greenView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeLeading multiplier:1 constant:0];

    

    //到红色视图底部的距离

    NSLayoutConstraint *greenTop = [NSLayoutConstraint

    constraintWithItem:greenView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeBottom multiplier:1 constant:50];

    

    //宽度

    NSLayoutConstraint *greenWidth = [NSLayoutConstraint

        constraintWithItem:greenView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];

    //高度

    NSLayoutConstraint *greenHeight = [NSLayoutConstraint

        constraintWithItem:greenView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:redView attribute:NSLayoutAttributeHeight multiplier:0.5 constant:0];

 

    [self.view addConstraints:@[greenHeight,greenWidth,greenAlignLeft,greenTop]];

  

    

}



@end


























转载于:https://my.oschina.net/luhoney/blog/670660

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值