如何在 UIImageView 中显示 UIImage?

Posted

技术标签:

【中文标题】如何在 UIImageView 中显示 UIImage?【英文标题】:How can I display a UIImage in a UIImageView? 【发布时间】:2013-09-10 21:36:34 【问题描述】:

我正在玩 Xcode 5 和故事板。我正在使用相机拍摄UIImage,但我无法弄清楚如何在拍摄后在手机上显示图像。我已经指定了一个IBOutlet UIImageView 并将它的值设置为我从相机捕获的图像,但这似乎根本没有任何作用。

这是我的界面:

@interface HCViewController ()

@property (nonatomic, retain) IBOutlet UIImageView *image;

@end

这是我的didFinishPickingWithMediaInfo 方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    // Get the picture from the camera
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage];

    // Set the IBOutlet UIImageView to the picture from the camera
    // This does nothing as far as I can tell
    self.image = [[UIImageView alloc] initWithImage:imageFromCamera];

    // Let's take a closer look at this
    NSLog(@"%@", self.image);

    // Close the camera view controller
    [self dismissViewControllerAnimated:YES completion:nil];

这是我在 self.image 的记录器中看到的:

2013-09-10 17:17:45.169 YourMom[6136:60b] <UIImageView: 0x1556fdc0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x155d5b10>>

我的故事板有一个视图控制器,它有两个不同的场景,可以来回滑动。这两个场景都有一个“视图”,其中一个“图像视图”作为子项。每个图像视图都有“参考插座”,似乎连接到我在界面中定义的image 变量。但是,简单地设置image 的值并不会改变手机显示。

在阅读了这个 SO 问题后:How can I change the image displayed in an UIImageView programmatically? 我尝试了[self.image setImage:image],但这似乎也没有做任何事情。如何告诉 Xcode 我希望 image 出现在视图中?

【问题讨论】:

【参考方案1】:

你的错误在于:

self.image = [[UIImageView alloc] initWithImage:imageFromCamera];

因为您使用的是 Storyboard,所以您的 UIImageView 将为您初始化。通过执行这行代码,您将丢弃旧的UIImageView 并用没有框架的新UIImageView 替换它。

你只需要这样做:

[self.image setImage:imageFromCamera]

另外,您可能从 info.xml 中获取了错误的图像。尝试UIImagePickerControllerOriginalImage 而不是UIImagePickerControllerEditedImage。 希望这有帮助,干杯!

【讨论】:

你在这两个方面都是对的。非常感谢。我喜欢 ***!【参考方案2】:

UIImage 视图有一个名为image 的属性。

此属性的类型为UIImage

所以如果你有UIImage,那么你可以如下设置属性:

imageView.image = image;

【讨论】:

【参考方案3】:
// this is your delegate method to set the image taken from your camera

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 

 // Get the picture from the camera
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage];

 // alloc image view as you have to set it image on it
    UIImageView *imgView = [[UIImageView alloc]init];
    imgView.image = imageFromCamera;

// you can also set the image on button like this 
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage];
// imgBtn is UIButton property
    [self.imgBtn setImage:imageFromCamera forState:UIControlStateNormal];

// Let's take a closer look at this
    NSLog(@"%@", self.image);

// Close the camera view controller
    [self dismissViewControllerAnimated:YES completion:nil];


【讨论】:

【参考方案4】:

您可以尝试使用此代码来显示您的图像。

imageView.image : UIImage = UIImage(named: "YourImageName")

希望这可以帮助您解决问题。

【讨论】:

以上是关于如何在 UIImageView 中显示 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

没有 UIImageView 的 UIImage 的反射

UIImage 混合模式问题

将图像检索到我的 UIImageView

将 UIImageView 与 contentMode AspectFill 和顶部对齐

将 UIImageView 添加到 UIButton

将 UIImageView 和覆盖的 UIView 保存为图像(xcode/iOS)