纵向而不是横向的自动布局方向更改
Posted
技术标签:
【中文标题】纵向而不是横向的自动布局方向更改【英文标题】:Auto layout orientation change for portrait but not horizontal 【发布时间】:2014-05-20 02:33:31 【问题描述】:我将应用的布局设计为横向,但纵向时看起来过于狭窄。当它处于纵向时,我想将我的所有UILabels
向下移动 10 个左右像素。我尝试通过使用自动布局设置上限约束来做到这一点。而且我能够获得我想要的纵向位置,但它也改变了UILabels
的横向位置。我考虑将所有标签都转为IBOutlets
,并以编程方式更改它们的位置。但我想知道是否有更简单或更有效的解决方案?
【问题讨论】:
实现自动布局约束怎么样? 当我这样做时,它会改变我的 UILabel 在横向和纵向方向的位置,但我只希望它改变纵向。 【参考方案1】:您可以向 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
【讨论】:
感谢您的回复!如何将约束与要移动的 UILabel 连接起来? 我添加了另一种方法,它向您展示了创建约束的典型方法。注意:我没有运行代码,所以可能会有错误。我之前也没有使用过这个构造函数,所以我不确定它是否有预期的效果。以上是关于纵向而不是横向的自动布局方向更改的主要内容,如果未能解决你的问题,请参考以下文章