如何在使用 Interface Builder 创建的 UIImageView 中加载图像?

How to load image inside the UIImageView created using Interface Builder?

我使用 xib 创建了一个 UIImageView。当我使用以下代码时,图像出现在模拟器的左上角。虽然我已经使用 Interface Builder 将 UIImageView 的底部约束设置为黑色按钮上方 45,但它不起作用。

我希望图像显示在我使用 xib 放置 UIImageView 的位置。请帮忙!谢谢!

UIImage *image = [UIImage imageNamed:@"picture.jpg"];
self.imageHolder = [[UIImageView alloc] initWithImage:image];
self.imageHolder.image = image;
[self.view addSubview:self.imageHolder];

按照您描述的方式,您正在初始化两个 UIImageView:一个在 XIB 中,一个在代码中。您不需要这些行:

UIImage *image = [UIImage imageNamed:@"picture.jpg"];
self.imageHolder = [[UIImageView alloc] initWithImage:image];
self.imageHolder.image = image;
[self.view addSubview:self.imageHolder];

只需将 UIImageView 的 IBOutlet 属性 创建到相应的视图控制器,如下所示:

@property (nonatomic, weak) IBOutlet UIImageView *imageView;

属性不需要任何初始化。只需将其放入您的 viewDidLoad 方法中即可:

self.imageView.image = [UIImage imageNamed:@"picture.jpg"];

如果图像不会被动态设置,请在 XIB 的属性检查器中设置它。

首先单击“显示助手编辑器”按钮以同时显示界面生成器和代码

然后单击+ctrl 按钮 并将图像拖到代码中以创建一个 IBOutlet。

@property (weak, nonatomic) IBOutlet UIImageView *sunImage;

然后在-(void)viewdidload或者你想设置图片的地方

UIImage *image = [UIImage imageNamed:@"picture.jpg"];
[self.sunImage setImage:image];

IOS 将自动在与您的 xib 文件相同的包中查找您的文件 "overflow.png"。如果你的 xib 文件只是在你的应用程序的目标中,那么默认情况下它会在主包中查找。

如果您想以编程方式将新图像加载到图像视图中,并且您的图像位于主包中:

UIImage *image = [UIImage imageNamed:@"MyAwesomeImage"];
self.imageView = image;

如果您的图片在另一个包中:

NSBundle *imageBundle = ...   // [NSBundle mainBundle] if your image is    inside main bundle
NSString *imagePath = [imageBundle pathForResource:@"MyAwesomeImage"    ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
self.imageView.image = image;