gpt4 book ai didi

ios - 如何使用自动布局在屏幕中水平和垂直居中 UILabel?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:36 26 4
gpt4 key购买 nike

几天来我一直在使用自动布局,我试图将 UILabel 在屏幕上垂直和水平居中,但我不太愿意让标签居中。

我希望实现如下所示,

  ---------------
| |
| |
| |
| |
| Label |
| |
| |
| |
| |
| SIGNIN REG |
---------------

我向 UILabel 添加了以下约束,

NSLayoutConstraint *myLabelConstraintHeight = [NSLayoutConstraint constraintWithItem:myLabel
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:100];

[myLabel addConstraint:myLabelConstraintHeight];


NSLayoutConstraint *myLabelConstraintWidth = [NSLayoutConstraint constraintWithItem:myLabel
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:100];
[myLabel addConstraint:myLabelConstraintWidth];

最佳答案

NSLayoutConstraint *centerX = [NSLayoutConstraint constraintWithItem:label
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:label.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0];
NSLayoutConstraint *centerY = [NSLayoutConstraint constraintWithItem:label
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:label.superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0
constant:0.0];

// No longer using [label addConstraints:@[centerX, centerY];
[NSLayoutConstraint activateConstraints:@[centerX, centerY]];

更新:Apple 现在希望您使用 [NSLayoutConstraint activateConstraints:][NSLayoutConstraint deactivateConstraints:] 而不是使用 [UIView addConstraint:][UIView removeConstraint:]

2017 年 8 月 24 日更新:

一个更简单的版本可以使用布局 anchor 来完成:

[label.centerXAnchor constraintEqualToAnchor:label.superview.centerXAnchor].active = YES;
[label.centerYAnchor constraintEqualToAnchor:label.superview.centerYAnchor].active = YES;

关于ios - 如何使用自动布局在屏幕中水平和垂直居中 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com