2013-02-27 80 views
1

我有一个UIScrollView,我想从flickr加载图像列表。然后,我希望这些照片能够像原始股票iphone照片应用程序一样显示,以便在照片中滚动。ios。 ScrollView只显示一个图像的子视图

这里是我的代码

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    for (int i = 0; i < self.urlArray.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     UIView *subview = [[UIView alloc] initWithFrame:frame]; 


     [self returnImageFromFlickr:[self.urlArray objectAtIndex:i]]; 

     UIImageView *imageView = self.largePhoto; 

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

    } 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.urlArray.count, self.scrollView.frame.size.height); 
} 

-(void)returnImageFromFlickr:(NSURL *)url { 



    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
    [self.largePhoto setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 



     [self.largePhoto setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

    }]; 

} 

发生了什么只有正在显示的最后一张图像。

我试过你的解决方案,因为我理解它并得到了这个。这不是摄影照片。只是一个白色的屏幕。在returnImageFromFlicrk方法中加上警告

[imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@“placeholder.png”]];

说 捕获“的ImageView”强烈该块很可能会导致保留周期

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    /*for (int i = 0; i < self.urlArray.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     UIView *subview = [[UIView alloc] initWithFrame:frame]; 


     [self returnImageFromFlickr:[self.urlArray objectAtIndex:i]]; 

     UIImageView *imageView = self.largePhoto; 

     [subview addSubview:imageView]; 
     //subview.backgroundColor = [colors objectAtIndex:i]; 
     [self.scrollView addSubview:subview]; 

    }*/ 

    for (int i = 0; i < self.urlArray.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     UIImageView *imageView = [[UIImageView alloc] init]; 
     [self returnImageFromFlickr:[self.urlArray objectAtIndex:i] imageview:imageView]; 

     [self.scrollView addSubview:imageView]; 

    } 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * self.urlArray.count, self.scrollView.frame.size.height); 
} 

-(void)returnImageFromFlickr:(NSURL *)url imageview:(UIImageView *)imageView { 
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
    [imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
     [imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

    }]; 


} 

回答

0

所有我需要做的是将代码从viewDidLoad中移动到viewDidApear

0

你是不是正确的参数设置为滚动内容泛这就是为什么所有你想要的图像不在scrollView中显示。尝试更新ScrollView的内容平移以适应所有图像的宽度。像

self.scrollView.contentSize = CGSizeMake(Width,Height);

在这种情况下,高度

将单个图像和宽度的HIGHT会(单幅图像的宽度*图像的总数)

+0

我想这个代码就是这么做的self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width *自我.urlArray.count,self.scrollView.frame.size.height); – user1898829 2013-02-27 12:22:59

+0

是的,你在做什么,但你设置的宽度和高度。对于宽度,你应该试试,即子视图的宽度* self.urlArray.count和高度,你应该尝试subView的高度。 – 2013-02-27 12:37:16

0

您覆盖self.largePhoto,你需要设置你的ImageView在returnImageFromFlickr

试试这个

UIImageView *imageView = [[UIImageView alloc] init]; 
[self returnImageFromFlickr:[self.urlArray objectAtIndex:i] imageview:imageView]; 

-(void)returnImageFromFlickr:(NSURL *)url imageview:(UIImageView *)imageView { 
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
    [imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
     [imageView setImage:image]; 

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

}]; 

}

+0

检查我上面更改的代码。我仍然无法工作。我有我正确应用您的解决方案。 – user1898829 2013-02-28 08:16:00

+0

进入[imageView setImageWithURLRequest]的成功块的代码是 [imageView setImage:image] – Diego 2013-02-28 08:27:35

相关问题