【问题标题】:How to manage UIImageView content mode?如何管理 UIImageView 内容模式?
【发布时间】:2012-12-17 12:39:46
【问题描述】:

我有一个固定矩形大小的 UIImageView。但是我的图像大小不固定。我想根据 UIImageView 的矩形大小显示图像。无论图像是大还是分辨率大,都必须根据 UIImageView 的大小固定显示。我对使用以下资产感到困惑。

UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw

在自动调整掩码中设置什么? 他们的行为如何?

【问题讨论】:

  • 你为什么不使用上面提到的值来检查?您可以轻松找到差异
  • UIViewContentModeScaleAspectFill 使用 UIImageView 内容模式的属性。它将使您的图像适合 UIIMageView 矩形大小。

标签: iphone ios ipad uiimageview


【解决方案1】:

请试试这个代码,希望它对你有用。

UIImageView contentMode 设置为UIViewContentModeScaleAspectFill 如下:

imageView.contentMode = UIViewContentModeScaleAspectFill;

设置 UIImageView 的 autoresizingMask 如下:

imageView.autoresizingMask =   
    ( UIViewAutoresizingFlexibleBottomMargin
    | UIViewAutoresizingFlexibleHeight
    | UIViewAutoresizingFlexibleLeftMargin
    | UIViewAutoresizingFlexibleRightMargin
    | UIViewAutoresizingFlexibleTopMargin
    | UIViewAutoresizingFlexibleWidth );

【讨论】:

  • 这个答案值得更多的支持!!在 UIImageViews 中围绕视图移动和调整大小/缩放图像时帮助我。现在我的 frame.origin.x、frame.origin.y、frame.size.height 和 frame.size.width 位置是它们应该在的位置。
  • 更新:UIViewContentMode.ScaleAspectFill 和 UIViewAutoresizing.FlexibleBottomMargin
  • 我爱你。我现在可以睡觉了。
  • 有一种方法可以使用约束而不是掩码来做到这一点?或者我可以在哪里设置启用约束的情节提要上的蒙版?
  • 我也把 clipsToBound = YES;
【解决方案2】:

你只需要这两行:

imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.layer.clipsToBounds = YES; // Must do this or else image will overflow

【讨论】:

  • 谢谢! ClipsToBounds 是我的问题。我将它设置为NO,这样我就可以在 UIImageView 周围显示一个阴影,而无需考虑它也会让图像溢出的事实。感谢您的提示。
【解决方案3】:

这里是 swift 的解决方案:

let imageView = UIImageView(image: UIImage(named: "backgroundImage"))
imageView.frame = tableView.frame
imageView.contentMode = .ScaleAspectFill
tableView.backgroundView = imageView

【讨论】:

    【解决方案4】:

    如果你想让你的UIImageView按比例大小,那么你必须将它的模式设置为UIViewContentModeScaleAspectFit

     yourimage.contentMode=UIViewContentModeScaleAspectFit;
    

    让我知道它是否有效!!!

    快乐编码。

    【讨论】:

    • 不,它不起作用。图片未覆盖 UIImageView 的整个区域。
    • 是的,它不会覆盖UIImageview的整个区域,因为它会根据比例设置你的图像,所以它会根据比例留下一些区域空白。所以你会得到没有模糊的图像并且变得清晰image.so 是否要覆盖整个 UIImageview 区域?
    【解决方案5】:

    在 swift 中你也可以设置内容模式

    var newImgThumb : UIImageView
    newImgThumb = UIImageView(frame:CGRectMake(0, 0, 100, 70))
    newImgThumb.contentMode = .ScaleAspectFit
    

    【讨论】:

      【解决方案6】:

      值得注意的是,swift 3 发生了如下变化

      .ScaleAspectFitscaleAspectFit

      .ScaleAspectFill 到 .scaleAspectFill

      【讨论】:

        【解决方案7】:

        希望对你有帮助

        CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
        
        image = [UIImage imageWithCGImage:imageRef]];
        
        CGImageRelease(imageRef);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-28
          • 1970-01-01
          相关资源
          最近更新 更多