【发布时间】:2014-05-15 01:21:30
【问题描述】:
当我的应用旋转为横向时,我想使用不同的布局,请参阅以下图片:纵向:
风景:
蓝色方框代表UITextFields。
在仍使用自动布局的情况下将设备旋转为横向时重新排列它们的最简单方法是什么?
【问题讨论】:
-
您需要以编程方式添加约束
-
你能发布一个例子作为答案吗?
标签: ios autolayout
当我的应用旋转为横向时,我想使用不同的布局,请参阅以下图片:纵向:
风景:
蓝色方框代表UITextFields。
在仍使用自动布局的情况下将设备旋转为横向时重新排列它们的最简单方法是什么?
【问题讨论】:
标签: ios autolayout
您需要为横向/纵向方向添加单独的约束。请参阅以下示例,它将对您有所帮助。这里我只为一个文本字段添加了约束。
textfld1.translatesAutoresizingMaskIntoConstraints = NO;
- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[textfld1 removeConstraints:textfld1.constraints];
[self.view removeConstraints:self.view.constraints];
if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
//You can use either center horizontally or Leading
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:234.0]];
// // Center horizontally
// [self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
// attribute:NSLayoutAttributeCenterX
// relatedBy:NSLayoutRelationEqual
// toItem:self.view
// attribute:NSLayoutAttributeCenterX
// multiplier:1.0
// constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:100.0]];
}else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:120.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:140.0]];
}
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:30]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:textfld1
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:300]];
}
【讨论】: