【问题标题】:Load an image in UIImageView and resize the container - swift在 UIImageView 中加载图像并调整容器大小 - swift
【发布时间】:2017-08-21 11:44:37
【问题描述】:

我有一个 s3 链接,我需要使用它在 UIImageView 中加载图像。我没有图像的尺寸。我在故事板中定义了 mainImageView(前导和尾随约束)

在代码中,我正在使用以下方式加载图像:

mainImageView.setImageWith(URL(string: ("https:" + (content?.imagePath)!)), placeholderImage: nil)

图像加载后,我们有什么方法可以调整容器的大小吗?我希望容器采用图像的尺寸(高度和宽度)。我听说在 Android 中有一个叫做 content wrap 的东西可以达到同样的效果。但是,我在 iOS 中找不到等价物。

【问题讨论】:

    标签: ios swift uiimageview nsurl


    【解决方案1】:

    如果您使用自动布局,您实际上不必做太多事情,因为UIImageView 有一个固有尺寸,它可以占用图像的宽度和高度。在您的 .xib 或 .storyboard 中,您需要定位图像视图,以便它可以解析其位置(水平和垂直)。对于尺寸,您可以提供默认图像(自动布局会显示错误)。

    当您在运行时更改图像时,imageview 将采用其图像的大小。

    【讨论】:

      【解决方案2】:

      你可以使用:

      imgView.frame = [self frameForImage:self.image inImageViewAspectFit:imgView];
      

      功能实现:

      -(CGRect)frameForImage:(UIImage*)image inImageViewAspectFit:(UIImageView*)imageView
      {
          float imageRatio = image.size.width / image.size.height;
          float viewRatio = imageView.frame.size.width / imageView.frame.size.height;
          if(imageRatio < viewRatio) {
              float scale = imageView.frame.size.height / image.size.height;
              float width = scale * image.size.width;
              float topLeftX = (imageView.frame.size.width - width) * 0.5;
              return CGRectMake(topLeftX, 0, width, imageView.frame.size.height);
          } else {
              float scale = imageView.frame.size.width / image.size.width;
              float height = scale * image.size.height;
              float topLeftY = (imageView.frame.size.height - height) * 0.5;
              return CGRectMake(0, topLeftY, imageView.frame.size.width, height);
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以通过将其框架修改为图像的大小来调整图像的大小:

        mainImageView.frame = CGRect(origin: mainImageView.frame.origin, size: mainImageView.image.size)
        

        如果您使用的是自动布局,则需要相应地修改高度和宽度约束或让布局发挥作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 2012-09-15
          • 2019-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多