【问题标题】:Resizing UIImageView调整 UIImageView 的大小
【发布时间】:2013-04-24 21:35:59
【问题描述】:

我有一个UIImageView 的视图。我正在从我的服务器中检索 300 像素宽和 100 像素高的图像。但是,当我将图像插入我的UIImageView 时,图像会被拉伸到图像视图的大小。

代码viewDidLoad:

id path = @"URL TO IMAGE";
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];

CGRect frame = [imageView frame];
frame.size.width = 300;
frame.size.height = 100;
[imageView setFrame:frame];

self.imageView.image = img;

但是,UIImageView 的大小不会更改为我上面代码的第 6 行和第 7 行中的值。

感谢任何建议,我是 Objective-C 的新手。

.h:

#import <UIKit/UIKit.h>

@interface detailViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *imageView;

【问题讨论】:

    标签: ios objective-c uiimageview cgrect


    【解决方案1】:

    你需要设置 UIImageView 的contentMode。查看contentMode 的 UIView 文档以查看您可以使用的不同值。例如,UIViewContentModeScaleToFill 拉伸图像以完全匹配 UIImageView 的大小; UIViewContentModeCenter 根本不会改变图像的大小;等等。

    编辑:至于 UIImageView 本身,您需要确保您的引用都正确指向同一个 UIImageView 并且这是来自笔尖的同一个 UIImageView。此外,如果在笔尖上开启了 Autolayout,您的 setFrame: 将不起作用,因为框架是由约束决定的。

    【讨论】:

    • 我添加了 self.imageView.contentMode = UIViewContentModeScaleToFill;但是仍然没有缩放图像
    • 你怎么知道的?将 UIImageView 的 backgroundColor 设置为黑色。这样就可以看到 UIImageView 本身,也可以看到图片和图片视图之间的关系。
    • 我确实按照建议更改了背景颜色,并且还更改了 .xib 文件中 UIImageView 的大小,UIImageView 的大小没有更改为第 6 行和第 7 行的值。
    • 所以你看,你问错了问题,因为你做了一个错误的假设。您认为图像未正确调整大小。但是图像 正在 被正确调整大小。问题是 UIImageView 本身 没有得到你想要的框架。所以现在你必须把注意力转移到为什么是。
    • 你是正确的马特。我已经编辑了我的问题。电脑前的长时间一定让我很着急。