【问题标题】:Resize UIImageView to wrap "aspect fitted" image调整 UIImageView 的大小以包装“方面适合”图像
【发布时间】:2016-09-01 22:49:29
【问题描述】:

我们正在从 Internet 下载图像并将它们分配给具有 aspectFit 的 UIImageView 对象,因为它是 contentMode,类似于 [myImageView setImageWithURL:aURL]。

但是,宽高比会调整图像的大小并将其居中在视图的边界内。也就是说,当图片的宽度大于高度时,UIImageView的下边框和图片本身之间就会有一个空间。

现在,我想在图像下方添加一个标签,中间没有任何类型的空格。如何做到这一点?我的意思是,我们可以预先调整图像大小,然后设置 ImageView 框架,但是,由于图像的源是 URL,因此需要先下载图像(UIImageView 类别已经实现了一堆代码)。

有没有办法告诉 UIImageView 将自己“包裹”在 resizedImage 周围,或者有没有办法通过约束来实现这种效果?

谢谢

【问题讨论】:

    标签: ios uiimageview uiimage afnetworking


    【解决方案1】:

    约束应该处理这个问题。确保您的 UIImageView 仅在左侧和右侧有约束(我猜也是顶部)并且对高度没有约束。对于你的 UILabel,它应该有一个从 UIImageView 顶部到底部的约束(以及你想要的任何水平约束)。

    【讨论】:

      【解决方案2】:

      正如 Cbiggin 所说,您可以为此使用 AutoLayout,但这是实现此目的的另一种方法

      显示在异步线程中加载和运行此代码:

      NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];
      

      图像数据下载后,使用此代码获取图像的宽度和高度

      UIImage *image = [UIImage imageWithData:imageData];
      NSLog(@'image height: %f',image.size.height);
      NSLog(@'image width: %f',image.size.width); 
      

      你可以计算你的 UIImageView 的高度,例如,如果你的 UIImageView 的宽度是 320,而你的图像尺寸是 1024x768,那么你的 UIImageView 高度就是 240

      float imageViewHeight = imageView.frame.size.width/image.size.width * image.size.height
      

      你可以使用 imageViewHeight

      【讨论】:

        猜你喜欢
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 2013-12-21
        相关资源
        最近更新 更多