UIImage 不应在 UIImageView 内拉伸

Posted

技术标签:

【中文标题】UIImage 不应在 UIImageView 内拉伸【英文标题】:UIImage should not stretched inside the UIImageView 【发布时间】:2015-05-13 06:19:52 【问题描述】:

我在我的 xib 中使用UIImageView。应用程序专为没有自动布局的多设备而设计。这意味着我正在使用自动调整大小。我想做的是,只有我的UIImageView 应该自动调整UIImageView 内的图像而不是我的图像,但不幸的是我的图像也被UIImageView 拉伸。我尝试了不同的方法,但都没有成功。也更改了内容模式,但对我不起作用。

【问题讨论】:

不可能。 UIImage 会根据 UIImageView 的大小进行拉伸。 @iPhone 有什么棘手的解决方案,哪位冷帮我? 但是你为什么想要这样的解决方案? 我认为你应该保持 UIImageView 的大小固定。在我看来没有其他解决方案 请在屏幕截图中显示您的问题@Salman 【参考方案1】:

试试这个……

//set content mode
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
//clear background color
self.imageView.backgroundColor=[UIColor clearColor];

UIViewContentMode

UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight,

【讨论】:

这个解决方案是在 UIImageView 而不是 UIImage 上实现的。 @Salman 我已经尝试过了,但是可以。你可以在这里看到链接***.com/questions/7035523/… @Salman 请分享您的输出和预期输出的屏幕截图。 @AshokLondhe 我已经发布了截图。我的图像尺寸是 480 X 360 ,我的 UIImageView 根据 iPad 调整大小,但我不想让我的图像调整大小或拉伸。 @Salman 你看过我在之前评论中提到的链接吗?【参考方案2】:

不要将UIImage 添加到大小将发生变化的UIImageView。将其添加到另一个 UIImageView 并让第二个 UIImageView 成为第一个 UIImageViewsubview

UIImage *exampleImage = [UIImage imageWithContentsOfFile:filePath];
UIImageView *variableImageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

CGFloat imageX = (variableImageView.bounds.size.width - exampleImage.size.width) / 2;
CGFLoat imageY = (variableImageView.bounds.size.height - exampleImage.size.height) / 2;

UIImageView *helperImageView = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, exampleImage.size.width, exampleImage.size.height)];

helperImageView.image = exampleImage;
helperImageView.contentMode = UIViewContentModeScaleAspectFit;

[self.view addSubview:variableImageView];
[variableImageView addSubview:helperImageView];

我希望这会有所帮助。

【讨论】:

以上是关于UIImage 不应在 UIImageView 内拉伸的主要内容,如果未能解决你的问题,请参考以下文章

将 UIImage 传递给 SubView 的 UIImageView?

为 UIImageView 手动缩放 UIImage

响应来自滚动视图 ios 5 内 UIImageView 数组的事件

仅将 UIImage 移动到另一个 UIImage 内

试图将 UIView 放在 UIImageView 之上以突出显示 UIImage 的一部分

UIImageView 填写 UIView