Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像不显示在视图中(iPhone)_Iphone_Uiimageview - Fatal编程技术网

图像不显示在视图中(iPhone)

图像不显示在视图中(iPhone),iphone,uiimageview,Iphone,Uiimageview,我有一个不能显示图像的viewcontroller,下面是我的代码: - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; dispatch_queue_t downloadQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dis

我有一个不能显示图像的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);
}
它以前工作得很好,但在我对其他ViewController做了一些更改(我在这一个中没有做任何更改)之后,它不再显示图像,我无法理解发生了什么

当我使用“dismissModalViewControllerAnimated”函数关闭这个viewcontroller时,我当时确实看到了图像;当我将应用程序设为背景并再次放在前面时,图像会神奇地出现

我完全糊涂了!有什么建议吗

我的问题通过将这些代码放在主队列中解决了,谢谢大家的关注

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];
    }   
});

您可以使用[scrollView bringSubviewToFront:imageView];
另外,还要确保您的imageView已经分配了一些内存。

您的问题必须在其他地方,或者是图像本身的问题。除非您在代码的其他地方更改它,否则它不会在这里引起问题。据我所知,这里的所有代码都是完全正确的。检查您添加的其他视图控制器以及XIBs,以查看是否所有内容都已正确连接。即使是,也要重新连接图像视图和滚动视图。滚动视图显示是否正确?

在此之后,您能否调试并检查滚动视图的大小: scrollView.contentSize=image.size; 否则,请尝试将其保持静态并尝试,如果它显示结果,则在保持其图像大小时,内容大小存在问题。

然后键入 scrollView.contentSize=CGSizeMake(image.frame.size.width,image.frame.size.height)


它可能会工作。

请查看图像视图的框架。如果为(0,0),则不会显示结果

并在下面的代码中将图像替换为图像视图


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

它不起作用。scrollView和imageView是从xib文件初始化的。我在解除此viewcontroller时确实看到了该图像。但是它没有正确显示。imageview也有(0,0)?是的,我可以调试,图像的NSlog结果。大小是(0,0),但图像确实存在。我只做应用程序背景并将其放在模拟器中,图像显示正确。这才是最让我困惑的。你有没有试着在XIB中重新连接东西?这有时会解决一些奇怪的错误。事实上,下载序列中有更多的代码,调试结果告诉我,所有这些代码都已成功执行。但它没有在屏幕上显示执行结果(如删除某些子视图),只有在制作应用程序背景并将其再次放在前面时,结果才会显示在屏幕上,如我之前所述。正如其他人所说,尝试手动将大小设置为(0,0)以外的值,也许你在itI的时候会使用frame,我不认为这是原因,因为在以前的版本中,NSLog结果也是(0,0),并且工作得非常好。但是有一点不同,image和imageView是不同的。你的卷轴应该是图像视图大小。