Я достиг головного убора, пытаясь динамически создать UIImageView в iOS 4.2.
Это код, который доставляет мне неприятности:
1) Настройка
UIImageView *iview = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 95, 149)];
iview.tag = 200; // see note 1
iview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[self.view addSubview:iview];
[iview release];
Я пытался выпустить и не выпускать iview.
2) Выплата
NSString *img = ...[see note 2];
NSLog(@"Filename: %@", img);
UIImageView *pIV = (UIImageView *)[self.view viewWithTag:200];
if (pIV == nil) {
abort();
}
UIImage *pI = [UIImage imageWithContentsOfFile:img];
if (pI == nil) {
abort();
}
[pIV setImage:pI];
Это расширено, чтобы показать, на что я смотрю, так как краткая версия не работала для меня.
Примечание 1: Большинство из вышеуказанных жестко закодированных значений (200, границы кадра и т. Д.) Либо #defines, либо вычисляются в forloop, в котором находится код выделения iview. Оставьте для краткости, но дайте мне знать, если вы думаете, что это полезно.
Примечание 2: Это просто сообщение, которое возвращает путь к файлу после просмотра в NSBundle и т. Д. Вывод NSLog равен
2011-01-30 22: 09: 54.767 ribbit [13529: 207] Имя файла: / Users / rip / Библиотека / Поддержка приложений / iPhone Simulator / 4.2 / Applications / C421AA9F-45BB-41AB-8CB0-1540FABB56D3 / ribbit. app / cardfront_a7.png
.png существует, и оба стража не равны нулю (поэтому не может произойти abort ()).
Я убежден, что это просто нечто базовое.
Вещи, которые я пробовал:
1) Используется IB для генерации UIImageView. Когда он был подключен правильно, я мог видеть рамку, и показывалось изображение, которое было задано по умолчанию в IB. Однако я все еще не мог изменить изображение, поэтому я перешел к их динамическому созданию ... думал, что это будет проще. Eh.
2) Пробовал использовать переменные экземпляра для различных iviews, но это было громоздко (генерируется десять таких UIImageView), и они тоже не работали.
Поскольку все три попытки потерпели неудачу с одинаковым поведением (работает нормально, просто не вижу изображения), я предполагаю, что это просто какая-то глупая мелочь.
Я приветствую любые ваши предложения.