Xcode Autolayout - 在横向视图中使子视图变小

时间:2015-11-05 08:47:12

标签: ios xcode autolayout

我的故事板中有以下视图。肖像版工作没有任何问题。但我希望在横向视图中使Profile Image更小。然后底部项目获取屏幕中的空间。我是否需要进行AutoLayout以外的编码

人像模式

enter image description here

横向模式

enter image description here

StoryBoard View

enter image description here

4 个答案:

答案 0 :(得分:5)

这里的男孩是要遵循的步骤,

  • 将高度,宽度限制添加到UIImageView,如下面的图片
  • 所述

enter image description here

enter image description here

  • 您成功添加了高度,宽度限制,现在我们将在横向视图中为所有iphone添加尺寸类。检查图片的大小等级。

enter image description here

enter image description here

enter image description here

  • 现在您已完成为高度约束添加大小类,为宽度约束执行相同的步骤(这是您的家庭工作)。
  • 检查以下图片中的输出

enter image description here

enter image description here

答案 1 :(得分:2)

您不应该将方向视为"风景"了。最好将它视为垂直:紧凑,高度:紧凑,除了6+以外,它基本上适用于所有iPhone。

在故事板的底部,您会看到一个类似于此layout menu for size classes on Xcode Storyboard

的小菜单

选择所需的尺寸等级。如果你不太了解它们,Xcode会告诉你每个人的用途。

控制从UIImageView拖动到主UIView并选择"等宽"和命令点击" Equal Heights"太。

点击UIImageView。在" Utilities"检查栏区域(右侧面板),点击"标尺"图标,您将看到UIImageView的约束。

调整"等高度"和"等宽"约束是视图的百分比。您可能需要根据自己的喜好进行调整。

您不需要Autolayout以外的任何内容来执行此操作。不要直接在viewWillTransitionToSize:coordinator:设置框架 - 您基本上对框架尺寸进行硬编码,并且您必须为每个尺寸检查UITraitCollection class为每个设置框架。

答案 2 :(得分:1)

让约束为IBOutlet属性,并在纵向或横向模式下调整它们。 您可以在Xcode的故事板中设置这些IBOutlet属性。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageWidthConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonBottomConstraint;
// Other constraints ....


- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
       // Portrait mode
       self.imageHeightConstraint.constant = ooo;
       // Adjust other constraints
       // ....
    } else {
       // Landscape mode
       self.imageHeightConstraint.constant = xxx;
       // Adjust other constraints
       // ....
    }
}

答案 3 :(得分:0)

您可以使用If-else条件手动为两个方向设置框架。

示例:

ReadFromStream(..)