【问题标题】:Image View change size for iPhone Screen Size using AutoLayout Storyboard使用 AutoLayout Storyboard 更改 iPhone 屏幕大小的图像视图大小
【发布时间】:2015-01-01 01:57:28
【问题描述】:

我有一个Image View,我希望根据屏幕大小更改高度和宽度:

  • iPhone 6 Plus 414x414
  • iPhone 6 375x375
  • iPhone 5s 320x320

我在情节提要中对 Image View 施加的任何约束似乎都将其硬编码(即约束高度和宽度),因此它适用于一种尺寸,但不适用于所有其他尺寸。

我们将不胜感激,谢谢!

更新

我有一个自定义表格视图单元TableViewCellTwo,它位于表格视图控制器TableViewController 的内部。

TableViewController.m

TableViewCellTwo *api2Cell = [tableView dequeueReusableCellWithIdentifier:@"YourAPI2Cell"];

api2Cell.labelHeadline.text = user;
api2Cell.labelDescription.text = cap;
api2Cell.labelPublished.text = date;

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 600.0;


// SDWebImage
if ([data.images count] == 0) {
    NSLog(@"Images Count: %lu", (unsigned long)data.images.count);
}
else {
    Images *imageLocal = [data.images objectAtIndex:0];
    StandardResolution *standardResolutionLocal = [imageLocal.standard_resolution objectAtIndex:0];
    NSString *imageURL = [NSString stringWithFormat:@"%@", standardResolutionLocal.url];

    __weak TableViewCellTwo *wcell = api2Cell;
    [wcell.imageView
     sd_setImageWithURL:[NSURL URLWithString:imageURL]
     placeholderImage:[UIImage imageNamed:@"320x180.gif"]
     ];
}

return api2Cell;

}

【问题讨论】:

  • 不要使用高度或宽度约束,使用“固定到超级视图”。
  • 感谢您的回复!那么用pin来超级查看左右零点呢?
  • 是的,你总是需要约束来定义它的大小,另一个来定义它的位置,在这种情况下,如果你固定左、右、顶部和底部,它应该可以工作,或者如果你想要 SPECIFIC尺寸,对于这些屏幕,您可以通过编程检测当前屏幕尺寸来修改它们
  • 我想我不确定我会使用什么作为顶部和底部引脚的值。我上面的标签之间已经有了垂直间距,然后从图像视图底部到容器边距的底部间距?
  • 基本上当我从图像视图中清除所有约束时:如果我将 0 作为顶部、底部、左侧、右侧的引脚...它仍然在做同样的事情(在与 iPhone 6 Plus 相比,更适合 iPhone 6)

标签: ios iphone uiimageview storyboard autolayout


【解决方案1】:

您想要的是将图像视图固定到视图的两侧(长度限制为 0),并为其提供 1:1 的纵横比。如果你这样做,再加上在它上面的标签上添加一个垂直约束,那么它将正常工作(视图底部应该没有约束)。

【讨论】:

  • 感谢您的回复!根据您的回答:我在上面的标签上添加了一个垂直约束,然后固定了 2 个边(左侧约束为已检查的边距),然后添加了 1:1 的纵横比。只是想知道为什么不需要对视图底部进行约束?现在单元格在垂直方向上太短了,因为它没有为单元格中的所有项目腾出空间(其中图像视图是垂直堆栈中的最后一个)。
  • 另外,即使我没有将它们设置为约束,我的图像视图的高度和宽度是否重要?现在图像视图只有 320x320。
  • 通过将视图固定到视图的两侧,可以为其提供特定于任何特定屏幕尺寸的宽度。因此,由于设置了宽度,并且您设置了纵横比,因此设置了高度。您通常不需要对底部进行约束,但如果这是在表格视图单元格中,那么可能会很好,因此单元格会自动调整其高度。
  • 我认为这一切都说得通。但是由于某种原因,无论如何,图像视图仍然保持 320x320(或在尺寸检查器中的任何宽度和高度)。即使没有将宽度和高度设置为约束,它们只是我将图像视图拖出的任何内容。关于我还可以检查哪些会使其无法正常工作的任何想法?
  • 我在原始问题中添加了一些额外信息,以防万一!另外,我从标准分辨率为 612x612 的 API 中提取图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多