Загрузка более 10 изображений на iPhone? - PullRequest
2 голосов
/ 27 февраля 2011

Я пытаюсь добавить более 10 изображений в ScrollView.

NSUInteger i;
for (i = 1; i <= numberOfImage; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"d%dimage%d.png", imageSection, i];               

    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

    // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
    CGRect rect = imageView.frame;
    rect.size.height = kScrollObjHeight;
    rect.size.width = kScrollObjWidth;
    imageView.frame = rect;
    imageView.tag = i;  // tag our images for later use when we place them in serial fashion
    [scrollView addSubview:imageView];
    [imageView release];
}

Этот код взят из примера Apple и работает нормально.Но если переменная 'i' больше 10, UIImage * image будет пустым.ImageName кажется правильным.Но я не знаю, почему это не загружает изображение.Кто-нибудь видит проблему ??

И еще одна вещь.Если я так сделаю, iOS автоматически контролирует память?Я имею в виду, что это пустая трата памяти, если в память загружены все (более 10) изображений, даже если они не отображаются.Я слышал, что iOS загружает только изображения, отображаемые на экране, и бесплатные изображения, которые не отображаются.Это правильно?

Спасибо за чтение.

Ответы [ 6 ]

1 голос
/ 27 февраля 2011

UIimage imageNamed: кеширует содержимое файла.Я рекомендую вам использовать UIImage + imageWithContentsOfFile: это не кэширует вообще в такой ситуации.

0 голосов
/ 01 марта 2011

Простите, ребята.Это оказалось моей ошибкой.ну, не совсем моя вина.Дизайнеры выкидывают мне много файлов с неправильными именами файлов, таких как d1imgae11.png ... В любом случае, советы от всех вас, ребята, дали мне другое мнение, чтобы увидеть проблему, и я получил еще один совет о том, чтобы не кэшировать изображения.Спасибо.

0 голосов
/ 27 февраля 2011

Привет,
Это не очень хороший способ загрузить 10 изображений одновременно. Все, что вы сделали правильно, и все равно вы отображаете изображение пустым, тогда, пожалуйста, проверьте журнал, может быть, есть предупреждение о памяти. Вы можете пример кода Applephotoscroller.Он будет делать все, что вы хотите, а также управляет хорошей памятью. Есть два метода: один использует CATieldLayer, а другой - непосредственно загружает изображения.Я рекомендовал вам использовать метод, который использует CATieldLayer.

0 голосов
/ 27 февраля 2011

Вы должны иметь правильные имена файлов. Вы сказали, что считаете имена файлов правильными.

NSLog(@"Loop %d: d%dimage%d.png", i,imageSection, i]);

Выйдите из имен файлов, чтобы вы могли видеть, какие имена на самом деле. Поместите эту линию в свой цикл.

NSUInteger i;
for (i = 1; i <= numberOfImage; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"d%dimage%d.png", imageSection, i];               
    NSLog(@"Loop %d: d%dimage%d.png", i,imageSection, i]);
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

    // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
    CGRect rect = imageView.frame;
    rect.size.height = kScrollObjHeight;
    rect.size.width = kScrollObjWidth;
    imageView.frame = rect;
    imageView.tag = i;  // tag our images for later use when we place them in serial fashion
    [scrollView addSubview:imageView];
    [imageView release];
}

Затем проследите за именами файлов в отладчике и посмотрите, существуют ли эти файлы изображений и в том же каталоге, где Apple поместила их файлы изображений.

0 голосов
/ 27 февраля 2011

Вы должны убедиться, что изображения имеют правильное имя (например, 0dimage11.jpg) и добавлены в проект XCode.

0 голосов
/ 27 февраля 2011

Вы, вероятно, должны соответственно установить contentSize.

IOS не будет выполнять эту магическую функцию управления памятью, если вы не используете UIView на основе CATiledLayer.

Если UIImage не создан, это потому, чтоимя не относится к изображению в папке ресурсов, и у вас должно быть исключение.

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