以编程方式向UIImageView添加UIImage

问题描述:

在.h文件中我声明了这一点;以编程方式向UIImageView添加UIImage

IBOutlet UIImageView *image; 

在.m文件中;

UIImage *image1 = [UIImage imageName:@"http://image.com/image.jpg"]; 
image = [[UIImageView alloc] initWithImage:image1]; 
image.frame = CGRectMake(0,0, 50,50); 
[self.view addSubView:image]; 

和我连接从接口生成器的UIImageView。但我需要这样做只能通过代码(不使用Interface Builder)。有人可以帮助我修改代码,以便我只能通过代码来完成此操作吗?

你不需要连接。此代码将无需连接即可使用。离开IBOutlet。

+0

你说我需要删除`IBOutlet`并从Interface Builder中删除`UIImageView`,代码将工作? – Illep 2011-12-15 16:47:09

+0

是的。你有你需要的一切:你创建一个imageView,设置图像,设置框架并将其添加到视图。 – Chakalaka 2011-12-15 16:55:59

UIImage *someImage = [UIImage imageName:@"http://image.com/image.jpg"]; 
UIImageView* imageView = [[UIImageView alloc] initWithImage:someImage]; 
[self.view addSubView:imageView]; 
+0

您还没有指定UIImageView的大小,以便图像占用整个帧? – Illep 2011-12-15 16:49:18

+0

它会自动将其设置为您正在启动的图像'someImage'的大小。 – 2011-12-16 03:42:06

我想你在uiimageview中显示远程图像时出现问题,所以我应该这样做。

NSData *receivedData = [[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://image.com/image.jpg"]] retain]; 
UIImage *image = [[UIImage alloc] initWithData:receivedData] ; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.frame = CGRectMake(0,0, 50,50); 
[self.view addSubView:image]; 

[image release]; 
[imageView release]; 

和我连接从界面生成器

这是一个错误的的UIImageView。如果你这样做,你的image实例变量所指向的图像视图将是错误的 - 即笔尖中的一个。你希望它是你在代码中创建的那个。

因此,不要从Interface Builder中建立连接;实际上,从界面生成器中删除图像视图,所以你不要迷惑自己。确保您的实例变量也是属性:

@property (nonatomic, retain) UIImageView* image; 

合成属性:

@synthesize image; 

现在您的代码将工作:

UIImage *image1 = [UIImage imageName:@"http://image.com/image.jpg"]; 
self.image = [[UIImageView alloc] initWithImage:image1]; 
// no memory management needed if you're using ARC 
[self.view addSubview:self.image]; 

您将需要与框架,直到打该位置是正确的。请注意,默认情况下,该框架将自动与图像大小相同。