【问题标题】:Xcode Autolayout - make subviews small in landscape viewXcode Autolayout - 在横向视图中使子视图变小
【发布时间】:2016-02-06 00:27:34
【问题描述】:

我的故事板中有以下视图。肖像版可以正常工作,没有任何问题。但我想让Profile Image 在横向视图中变小。然后底部项目获得屏幕空间。除了自动布局,我还需要做编码吗

人像模式

横向模式

故事板视图

【问题讨论】:

  • 你不需要做任何代码。它非常直截了当。您是否对个人资料图像进行了高度限制?你在使用尺码等级吗?
  • @Irfan 仅给出顶部和底部约束。如果我给左右图像消失
  • 它正在消失,因为当您更新框架时,它会将宽度设置为 0。或者您的高度约束是错误的,它会挤压它以使高度为 0。
  • 兄弟,您只需要添加一个高度约束,并根据您的要求使其与超级视图高度 0.4、0.3 成正比,大小类的自动布局现在非常简单。

标签: ios xcode autolayout


【解决方案1】:

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

示例:

    if (orientation == UIInterfaceOrientationMaskPortrait) 
{
            self.view.frame = CGRectMake(0, 0, 1000, 800);


            self.tableView1.frame = CGRectMake(1, 0, 764,510);

        }
        else if (orientation == UIInterfaceOrientationMaskLandscapeLeft)
        {
            self.view.frame = CGRectMake(0, 0, 1300, 370);
            self.tableView1.frame = CGRectMake(0, 0, 1300, 370);
            self.view.backgroundColor = [UIColor blackColor];

        }

【讨论】:

    【解决方案2】:

    您不应再将方向视为“横向”。最好将其视为垂直:紧凑,高度:紧凑,这基本上是除 6+ 之外的所有 iPhone 的横向。

    在 Storyboard 的底部,您会看到一个小菜单,如下所示

    选择您想要的尺码等级。如果你对它们不够了解,Xcode 会告诉你每一个的用途。

    控制从UIImageView 拖动到主UIView 并选择“等宽”并命令单击“等高”。

    点击您的UIImageView。在“实用程序”检查栏区域(右侧面板)中,单击“标尺”图标,您将看到UIImageView 的约束。

    将“等高”和“等宽”约束调整为视图的百分比。您可能需要根据自己的喜好对其进行调整。

    您只需要Autolayout 即可执行此操作。不要直接在viewWillTransitionToSize:coordinator: 中设置框架 - 这样做基本上是在对框架大小进行硬编码,并且您必须对每个大小类进行大量检查 UITraitCollection 才能为每个大小类设置框架。

    【讨论】:

      【解决方案3】:

      让约束为IBOutlet 属性,并在纵向或横向模式下调整它们。 你可以在 Xcode 的 storyboard 中设置那些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
             // ....
          }
      }
      

      【讨论】:

        【解决方案4】:

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

        • 为 UIImageView 添加高度、宽度约束,如下图所述

        • 您已成功添加高度、宽度约束,现在我们将为横向视图中的所有 iphone 添加尺寸类。查看图片了解尺码等级。

        • 现在您已完成为高度限制添加尺寸类,为宽度限制执行相同的步骤(这是您的家庭作业)。
        • 检查下面图片中的输出

        【讨论】:

        • 嘿,你创建了一个项目来帮助他脱帽... :)
        猜你喜欢
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        相关资源
        最近更新 更多