如何在横向旋转中使用自动布局调整UIPickerView / UIDatePicker视图高度?

时间:2013-07-07 21:47:34

标签: ios uikit uipickerview autolayout uidatepicker

当我的应用处于横向视图时,我希望将UIPickerView / UIDatePickerView的高度调整为162。在代码中自动布局有一种简单的方法吗?

我目前正在尝试以下处理调整大小的方法:

- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                      duration:(NSTimeInterval)duration
{
    NSInteger height = 216;
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        height = 162;
    }

    datePicker.bounds =
        CGRectMake(datePicker.frame.origin.x, datePicker.frame.origin.x,
               datePicker.frame.size.width, height);
}

但是当这个代码以横向方向执行时,我得到以下效果:选择器不再绑定到屏幕的左下角(这是它下面出现的白色边距):

enter image description here

是否有方法或自动布局来使用UIPickerViews处理此调整大小,或者我应该在视图控制器中的一个视图旋转方法中使用边界矩形?

2 个答案:

答案 0 :(得分:15)

您可以更改UIPickerView / UIDatePickerView的高度,但只能更改以下值:

  • 162
  • 180
  • 216

答案 1 :(得分:1)

如果您使用的是Autolayout:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        self.dateHeightConstraint.constant = 216;
    } else {
        self.dateHeightConstraint.constant = 162;
    }
}

如果您未使用Autolayout,请在此方法中将框架设置为162216的高度。