为什么我的UIImageView不会显示为子视图?

时间:2010-02-02 00:26:20

标签: iphone cocoa-touch

UIImage *image = [[UIImage alloc] initWithContentsOfFile:@"popup.png"];
  UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

  [self.view addSubview:imageView];

  [image release];
  [imageView release];

代码位于UIViewcontroller对象中。它编译得很好但是,在运行时,子视图似乎没有被添加。

我累了。

4 个答案:

答案 0 :(得分:1)

initWithContentsOfFile需要完整的文件路径,而不仅仅是文件名。

用以下内容替换初始化UIImage的行:

NSBundle *bundle = [NSBundle mainBundle];
UIImage *image = [[UIImage alloc] initWithContentsOfFile: [bundle pathForResource:@"popup" ofType:@"png"]];

更简单的方法是使用UIImage类的imageNamed:方法

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"popup.png"]];

您不必担心路径到文件的详细信息。只是initWithImage:方法缓存图像。根据您的应用可能有好有坏。

希望这有帮助!

答案 1 :(得分:0)

尝试使用:

UIImage *image = [UIImage imageNamed:@"popup.png"];

并且,当然,摆脱[image release];因为在此解决方案中image是自动释放的。

请注意,如果您有多个具有此名称的图像(在不同的文件夹/组中),此解决方案将不会很好...

答案 2 :(得分:0)

你的imageView需要一个框架。 imageView.frame = CGRectMake(0,0,320,480);

答案 3 :(得分:0)

我知道这个问题现在已经过时了,但有些用户仍然可以从答案中受益。

与其他人一样,请尝试使用 [UIImage imagedNamed:]代替initWithContentsOfFile

它没有显示在屏幕上的原因是你没有为图像设置位置。您可以通过为图像视图设置框架或在单个点设置其中心来解决此问题。将图像视图放在屏幕中央:

UIImage *image = [UIImage imageNamed:@"image.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

imageView.center = [self.view center];

// or if you want to set a frame instead
// CGRect imageFrame = CGRectMake(x,y,width,height);
// [imageView setFrame:imageFrame];

[self.view addSubView:imageView];

享受:)