我使用横向方向设计了我的应用程序的布局,但是当它处于纵向方向时,它看起来太拥挤了。当它处于纵向状态时,我希望将所有UILabels
向下移动大约10个像素。我尝试通过使用自动布局设置上限制来执行此操作。我能够以纵向获得我想要的位置,但它也改变了UILabels
的横向位置。我考虑过将所有标签转换为IBOutlets
并以编程方式更改其位置。但我想知道是否有更简单或更有效的解决方案?
答案 0 :(得分:0)
您可以向UILabel添加约束,并在更改方向时更改它们。例如,向UILabel添加一个约束,使其从屏幕顶部开始x像素。移动到纵向时,可以将约束更新为x + 10。
@interface YourClass()
@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) NSLayoutConstraint *constraint;
@end
@implementation YourClass
- (void)setupConstraints {
self.constraint = [NSLayoutConstraint constraintWithItem:self.label
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:0
constant:20];
}
// Call this method every time orientation changes.
- (void)updateConstraints {
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) {
self.constraint.constant = 30;
} else {
self.constraint.constant = 20;
}
}
@end