自动布局(代码)

本文介绍了在iOS应用中如何使用Auto Layout进行视图布局,包括UIImageView、UILabel等UI元素的添加及约束设置,并展示了如何通过代码实现这些布局。

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

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    UIImageView *logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.jpg"]];

    logoImageView.translatesAutoresizingMaskIntoConstraints = NO;

    logoImageView.contentMode = UIViewContentModeScaleAspectFit;

    [self.view addSubview:logoImageView];

    

    // 水平方向

    NSArray* hConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[logoImageView]-0-|" options:0 metrics:nil views:@{@"logoImageView": logoImageView}];

    [NSLayoutConstraint activateConstraints:hConstraintArray];

    

    // 垂直

    NSArray *vConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[logoImageView]" options:0 metrics:nil views:@{@"logoImageView":logoImageView}];

    [NSLayoutConstraint activateConstraints:vConstraintArray];

    

    // 底部

    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:logoImageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:0.5f constant:0.0f];

    heightConstraint.active = YES;

//

    

//    UIImageView *logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.jpg"]];

//    logoImageView.backgroundColor = [UIColor orangeColor];

//    logoImageView.translatesAutoresizingMaskIntoConstraints = NO;

//    logoImageView.contentMode = UIViewContentModeScaleAspectFit;

//    [self.view addSubview:logoImageView];

//    

//    // 水平方向

//    NSArray *hContraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-50-[logoImageView]-0-|" options:0 metrics:nil views:@{@"logoImageView":logoImageView}];

//    [NSLayoutConstraint activateConstraints:hContraintArray];

//    

//    // 垂直方向

//    NSArray *vContraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[logoImageView]" options:0 metrics:nil views:@{@"logoImageView":logoImageView}];

//    [NSLayoutConstraint activateConstraints:vContraintArray];

//    

//    // 底部高度

//    NSLayoutConstraint *bConstraintHeight = [NSLayoutConstraint constraintWithItem:logoImageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:0.25f constant:0];

//    bConstraintHeight.active = YES;

    

    // 添加scrollView

    UIScrollView *scrollView = [[UIScrollView alloc] init];

    scrollView.translatesAutoresizingMaskIntoConstraints = NO;

    scrollView.backgroundColor = [UIColor greenColor];

    [self.view addSubview:scrollView];

    

    NSArray *hScrollViewConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollView)];

    [NSLayoutConstraint activateConstraints:hScrollViewConstraintArray];

    

    NSArray *vScrollViewConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[logoImageView][scrollView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(logoImageView,scrollView)];

    [NSLayoutConstraint activateConstraints:vScrollViewConstraintArray];

    

    // label

    UILabel *nameLabel = [[UILabel alloc] init];

    nameLabel.text = @"做程序,先学会思维";

    nameLabel.textColor = [UIColor blackColor];

    nameLabel.translatesAutoresizingMaskIntoConstraints = NO;

    nameLabel.backgroundColor = [UIColor purpleColor];

    [scrollView addSubview:nameLabel];

    

    UILabel *descriptionLabel = [UILabel  new];

    descriptionLabel.translatesAutoresizingMaskIntoConstraints = NO;

    descriptionLabel.text = @"思维思维思维四;逻辑逻辑逻辑逻辑例句逻辑逻辑逻辑哦邻居哦";

    descriptionLabel.numberOfLines = 0;

    descriptionLabel.backgroundColor = [UIColor orangeColor];

    [scrollView addSubview:descriptionLabel];

    

    // 水平方向上,nameLabel左侧与父视图左侧对齐,nameLabel右侧与父视图右侧对齐,nameLabel宽度与logoImageView宽度相同

    NSArray *hNameLabelConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[nameLabel(==logoImageView)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(nameLabel, logoImageView)];

    [NSLayoutConstraint activateConstraints:hNameLabelConstraintArray];

    

    // 水平方向上,descriptionLabel左侧与父视图左侧对齐,descriptionLabel右侧与父视图右侧对齐,descriptionLabel宽度与logoImageView宽度相同

    NSArray *hDescriptionLabelConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[descriptionLabel(==logoImageView)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel, logoImageView)];

    [NSLayoutConstraint activateConstraints:hDescriptionLabelConstraintArray];

    

    // 垂直方向上,nameLabel顶部与父视图顶部对齐,nameLabel高度为20nameLabel底部与descriptionLabel顶部对齐,descriptionLabel底部与父视图底部对齐

    NSArray *vLabelConstraintArray = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[nameLabel(20)][descriptionLabel]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(nameLabel, descriptionLabel)];

    [NSLayoutConstraint activateConstraints:vLabelConstraintArray];

    

}

运行截图如下:

转载于:https://www.cnblogs.com/fantasy3588/p/4971861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值