Почему мой UIImageView не отображается как подпредставление? - PullRequest
0 голосов
/ 02 февраля 2010
UIImage *image = [[UIImage alloc] initWithContentsOfFile:@"popup.png"];
  UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

  [self.view addSubview:imageView];

  [image release];
  [imageView release];

Код находится внутри объекта UIViewcontroller. Он хорошо компилируется, но при запуске подпредставление не добавляется.

Я устал.

Ответы [ 4 ]

1 голос
/ 02 февраля 2010

initWithContentsOfFile требуется полный путь к файлу, а не только имя файла.

Замените строку, в которой вы инициализируете UIImage, следующим:

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

Более простым способом будетиспользуйте метод imageNamed: класса UIImage

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

И вам не нужно беспокоиться о деталях пути к файлу.Просто метод initWithImage: кэширует изображение.В зависимости от вашего приложения может быть хорошая или плохая идея.

Надеюсь, это поможет!

0 голосов
/ 01 августа 2013

Я знаю, что этот вопрос уже устарел, но некоторые пользователи все еще могут получить пользу от ответа.

Как уже говорили другие, попробуйте использовать [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];

Наслаждайтесь:)

0 голосов
/ 02 февраля 2010

вашему изображению нужен кадр. imageView.frame = CGRectMake(0,0,320,480);

0 голосов
/ 02 февраля 2010

Попробуйте использовать:

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

и, конечно же, избавьтесь от [image release];, потому что в этом решении image автоматически выпускается.

Обратите внимание, что это решение не будет хорошим, если у вас есть несколько изображений с этим именем (в разных папках / группах) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...