Загрузка нескольких изображений с сервера на кнопки UIB ?? - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь загрузить 8-10 миниатюр изображений на UIButton.Изображения загружаются напрямую через ссылки на мой сервер, например.www.abc.com/fire.png.Я поместил эти UIButtons в Scrollview.следующий код, как я этого добиваюсь.но всякий раз, когда этот метод вызывается, мои приложения зависают, так как я предполагаю, что изображения загружаются на кнопках.Как я могу предотвратить зависание моего приложения на несколько секунд ??

- (void)loadSCRView
{
[self.view addSubview:scrollView];

for (i = 0; i < [myEngine.logoUrlArr count]; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"%@",[myEngine.logoUrlArr objectAtIndex:i]];
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:imageName] options:NSDataReadingUncached error:nil]];

    UIButton *btn = [[UIButton alloc]init];
    [btn setImage:image forState:UIControlStateNormal];

    [btn setFrame:CGRectMake(x, 4, 57, 57)];
    x=x+ 70.00;

    btn.tag = i;

    [scrollView addSubview:btn];
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchDown];

    UILabel *label = [[UILabel alloc]init];
    label.text = [myEngine.nameArr objectAtIndex:i];
    [label setFont:[UIFont fontWithName:@"Helvetica" size:12]];
    [label setTextColor:[UIColor whiteColor]];
    [label setBackgroundColor:[UIColor clearColor]];
    [label setFrame:CGRectMake(btn.frame.origin.x , 59, 70, 20)];
    //[label setFrame:CGRectMake(100 , 59, 70, 20)];
    y=y+ 100.00;
    [scrollView addSubview:label];
    [btn release];
    [label release];
}

Ответы [ 3 ]

2 голосов
/ 09 августа 2011

Вы должны попытаться получить эти изображения (желательно в фоновом потоке), прежде чем отобразится представление прокрутки. Сохраните их на диске и используйте в виде прокрутки. Работа в сети, как правило, не будет такой быстрой, чтобы вы не наблюдали задержку.

НТН,

Акшай

0 голосов
/ 09 августа 2011

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

0 голосов
/ 09 августа 2011

Чтобы избежать замерзания, вы должны использовать NSOperationQueue. Здесь - хороший и подходящий пример ...

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