UIImageView не всегда отображается

Я отлаживаю проблему, когда изображение не отображается.

imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]]; NSLog(@"imageView right after initialization is: %@", imageView); imageView.frame = CGRectMake(2, 0, 316, 45); imageView.layer.zPosition = zPos; NSLog(@"imageView after running the setters: %@", imageView); [self.view addSubview:imageView]; 

Странная часть заключается в том, что иногда изображениеView отображается, иногда это не так (примерно в 75% времени, когда оно отображается).

imageView не доступен нигде, кроме кода выше.

Я заметил, что когда изображение не отображается , первый оператор журнала показывает, что:

imageView сразу после инициализации: <UIImageView: 0x9eaa760; frame = (0 0; 0 0); userInteractionEnabled = НЕТ; layer = <CALayer: 0x9ec04a0 >>

Когда отображается изображение :

imageView сразу после инициализации: <UIImageView: 0xaa61ad0; frame = (0 0; 644 88); opaque = NO; userInteractionEnabled = НЕТ; layer = <CALayer: 0xaa61330 & rt; & rt;

EDITED: Я провел десятки тестов, imageView всегда ведет себя одинаково: когда он не отображается, исходный кадр (0 0; 0 0). Когда это не так, это всегда какая-то другая ценность.

PS Я не использую ARC.

  • Изображение UIImageView на основе маски UIView
  • Swift: нарисуйте изображение без изменения его размера
  • iOS увядает с черным в верхней части UIImageView
  • загружать изображения из Интернета в UIImageView внутри UITableView
  • Можем ли мы увеличить изображение до полного размера устройства в качестве медиаплеера в iOS?
  • как использовать
  • (iphone) UIImageView setImage: утечки?
  • Просмотр изображения в полноэкранном режиме так же, как и приложение Facebook в IOS
  • 3 Solutions collect form web for “UIImageView не всегда отображается”

    В вашем журнале UIImageView отображается frame = (0 0; 0 0); Это означает, что представление не будет отображаться, так как оно имеет высоту и ширину 0. Это означает, что изображение не имеет размера или равно nil .

    Причина этого, скорее всего, связана с тем, что изображение, которое вы пытаетесь загрузить, не найдено: вы должны проверить, не найдено ли изображение:

     UIImage *image = [UIImage imageNamed:imageName]; if (!image) { NSLog(@"Image could not be found: %@", imageName); } imageView = [[UIImageView alloc] initWithImage:image]; 

    Это означает, что даже если вы измените рамку, вы все равно ничего не увидите, поскольку изображение не загружено.

    Почему вы не устанавливаете кадр первым и не устанавливаете изображение дальше?

      imageView = [UIImageView alloc]initWithFrame:CGRectMake(0,0,35,35)]; [imageView setImage:[UIImage imageNamed:@"img.png"]]; 

    В дополнение к ответу rckoenes вы всегда должны проверить, существует ли изображение внутри вашего пучка пакетов :

     NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:imageName]; if([fileManager fileExistsAtPath:path]) { UIImage *image = [UIImage imageNamed:imageName]; if (!image) { NSLog(@"Image could not be found: %@", imageName); } imageView = [[UIImageView alloc] initWithImage:image]; } else { NSLog(@"%@ is not included in the app file bundle!", imageName); } 

    таким образом вы узнаете, есть ли проблема b / c, у вас нет файла в первую очередь .. или b / c что-то не так с файлом, который мешает iOS загружать его.

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.