以编程方式向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。
UIImage *someImage = [UIImage imageName:@"http://image.com/image.jpg"];
UIImageView* imageView = [[UIImageView alloc] initWithImage:someImage];
[self.view addSubView:imageView];
您还没有指定UIImageView的大小,以便图像占用整个帧? – Illep 2011-12-15 16:49:18
它会自动将其设置为您正在启动的图像'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];
您将需要与框架,直到打该位置是正确的。请注意,默认情况下,该框架将自动与图像大小相同。
你说我需要删除`IBOutlet`并从Interface Builder中删除`UIImageView`,代码将工作? – Illep 2011-12-15 16:47:09
是的。你有你需要的一切:你创建一个imageView,设置图像,设置框架并将其添加到视图。 – Chakalaka 2011-12-15 16:55:59