可以在旋转时自动调整视图大小尽可能大吗?

时间:2014-07-02 13:48:14

标签: ios cocoa-touch uiview uiviewcontroller

当手机处于纵向时,我有以下设置:

enter image description here

当我将手机旋转到横向时,我希望view1按比例调整自身大小,以便尽可能多地适合屏幕,如下所示:

enter image description here

我知道如何使用代码手动执行此操作,但我想知道是否有某种自动设置我可以放置,因此无论何时手机旋转或每当时,视图都会知道这样做。视图控制器是以横向还是纵向显示?

1 个答案:

答案 0 :(得分:2)

你可以:

  1. 为您的观点定义autoresizingMask;或者,

  2. 定义AutoLayout constraints

  3. 您无需在Interface Builder中或以编程方式指定创建视图的方式。

    如果您使用Interface Builder,只需单击您的视图即可。如果您没有使用自动布局,请转到“尺寸检查器”,并以图形方式设置相应的弹簧(参见下图)。

    如果使用自动布局,则转到编辑器/引脚并将前导/尾随/顶部/底部空格固定到超级视图。开始时,自动布局可能看起来有点棘手。您可以访问http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1查看。

    如果以编程方式创建视图,则可以通过设置视图的autoresizingMask属性或向其添加约束来获得相同的结果。

    这是你如何使视图适应其超级视图的界限:

    NSDictionary* views = NSDictionaryOfVariableBindings(_subview);
    
    [self.view addConstraints:
     [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-16-[_subview]-16-|"
                                             options:0
                                             metrics:nil
                                               views:views]];
    [self.view addConstraints:
     [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_subview]-0-|"
                                             options: 0
                                             metrics:nil
                                               views:views]];
    

    注意我如何指定固定填充(-16-)或根本没有填充(-0 - )。

    你可能还需要打电话

    self.view.translatesAutoresizingMaskIntoConstraints = NO;
    _subview.translatesAutoresizingMaskIntoConstraints = NO;
    

    以避免可能的约束冲突(取决于可以与视图关联的自动调整掩码)。

    enter image description here