Изображение не отображается в представлении (iPhone) - PullRequest
0 голосов
/ 17 августа 2011

У меня есть viewcontroller, который не может отобразить изображение, вот мой код:

- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blackColor];

    dispatch_queue_t downloadQueue =
    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(downloadQueue, ^{

        NSData *mydata = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]];
        image = [UIImage imageWithData:mydata];

        if (image) {

            [imageView initWithImage:image];

            scrollView.contentSize = image.size;
            scrollView.bounces = NO;
            scrollView.minimumZoomScale = 0.5;
            scrollView.maximumZoomScale = 2.0;
            scrollView.delegate = self;

            [scrollView addSubview:imageView];
            [self.view addSubview:scrollView];

        }   
    });

    dispatch_release(downloadQueue);
}

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

когда я использую функцию "dismissModalViewControllerAnimated", чтобы закрыть этот view-контроллер, я действительно увидел изображение в этот момент; и когда я делаю фон приложения и снова помещаю его на передний план, изображение появляется волшебно.

Я полностью сбит с толку! Любое предложение?

мою проблему удалось решить, поместив этот код в основную квену, спасибо за ваше внимание.

dispatch_async(dispatch_get_main_queue(), ^{

    image = [UIImage imageWithData:mydata];

    if (image) {
        [imageView initWithImage:image];
        scrollView.contentSize = image.size;
        scrollView.bounces = NO;
        scrollView.minimumZoomScale = 0.5;
        scrollView.maximumZoomScale = 2.0;
        scrollView.delegate = self;
        [scrollView addSubview:imageView];
        [self.view addSubview:scrollView];
    }   
});

Ответы [ 5 ]

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

Пожалуйста, проверьте кадр изображения. если его (0,0), он не покажет результат.

и замените изображение на изображение в приведенном ниже коде.

scrollView.contentSize = CGSizeMake (imageView.frame.size.width, imageView.frame.size.height);

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

затем введите scrollView.contentSize = CGSizeMake (image.frame.size.width, image.frame.size.height);

это, вероятно, будет работать.

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

Ваша проблема должна быть где-то еще, или проблема с самим изображением.Это не вызвало бы проблемы здесь, если бы вы не изменили это где-то еще в вашем коде.Из того, что я могу сказать, весь код здесь полностью правильный.Проверьте другие контроллеры представления, которые вы добавили, а также в XIB, чтобы увидеть, все ли правильно подключено.Даже если это так, повторно подключите вид изображения и вид прокрутки.Правильно ли отображается вид прокрутки?

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

можете ли вы отладить и проверить размер scrollView после этого: scrollView.contentSize = image.size;иначе попробуйте сохранить его статичным и попробуйте, если он показывает результат, то проблема с размером вашего контента, так как вы сохраняете его image.size.

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

вы можете использовать [scrollView takeSubviewToFront: imageView];и также убедитесь, что вашему imageView уже выделено немного памяти.

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