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

时间:2015-08-29 20:22:49

标签: ios objective-c uiimageview 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

3 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:0)

按照你描述的方式,你正在初始化两个UIImageViews:一个在你的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中设置它。

答案 2 :(得分:0)

首先点击“显示助理编辑器按钮以显示界面构建器和代码

然后点击+ ctrl按钮并将图片拖到代码中以创建IBOutlet。

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

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

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