【问题标题】:iOS: Resizing UIImageView with AutoLayoutiOS:使用 AutoLayout 调整 UIImageView 的大小
【发布时间】:2014-02-04 15:43:32
【问题描述】:

我是 AutoLayout 的新手,并且有点挣扎。我有一个UIImageView,它是 UIView 的一部分。当应用在 3.5 英寸 设备上运行时,我希望 UIImageView 根据屏幕大小的变化调整大小。

我不确定如何实现这一点。从我目前所见,您只能设置视图的固定宽度和高度,是否可以使它们动态调整大小?换句话说,UIImageView 如何根据超级视图的高度调整大小?

【问题讨论】:

    标签: ios uiimageview autolayout


    【解决方案1】:
    1. 在 Interface Biulder 中选择您的 ImageView。
    2. 按下别针按钮。
    3. 设置约束。

    示例

    【讨论】:

    • 这个答案没有错。但是,与其给出恒定值,不如给出一个比率来调整 UIImageView 的位置和大小。如果您认为这是一个不错的选择,这就是解决iOS AutoLayoout with UIImageView 的方法
    【解决方案2】:

    此代码将根据其父视图的宽度和高度调整UIImageView 的大小。

    UIImageView *myImageView = [[UIImageView alloc] initWithImage:theImage];
    [self.view addSubview:myImageView];
    
    [myImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
    
    NSArray *imageViewConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[myImageView]|" options:0 metrics:nil views:@{@"myImageView": myImageView}];
    [self.view addConstraints:imageViewConstraints];
    
    imageViewConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[myImageView]|" options:0 metrics:nil views:@{@"myImageView": myImageView}];
    [self.view addConstraints:imageViewConstraints];
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题。它可能对某人有帮助,

      如果您在 InterfaceBuilder 或 Storyboard 中进行设计,只需将所有边缘固定到超级视图(即)前导空间、尾随空间、顶部空间和底部空间到 UIView。 就是这样

      【讨论】:

        【解决方案4】:

        选择图像视图。现在去添加一个与超级视图底部间距的图钉。

        【讨论】:

        • 这只会创建一个底部间距,图像大小保持不变。