1

flickr から画像のリストをロードしたい UIScrollView があります。次に、写真をスクロールするネイティブのストックiPhone写真アプリのように写真を表示したいと思います。

これが私のコードです

- (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) {

    }];

}

何が起こっているのか、最後の画像だけが表示されています。

私はそれを理解し、これを得たので、あなたの解決策を試しました。これは写真を盛り上げているわけではありません。ただの白い屏風。さらに、 returnImageFromFlickr メソッドの警告

[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) {

    }];


}
4

3 に答える 3

0

私がする必要があるのは、コードをviewDidLoadからviewDidApearに移動することだけでした

于 2013-02-28T09:58:50.337 に答える
0

self.largePhoto を上書きします。returnImageFromFlickr で imageView を設定する必要があります。

これを試して

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) {

}];

}

于 2013-02-27T12:26:46.780 に答える
0

Scroll コンテンツ パンに適切なパラメータを設定していないため、必要なすべての画像が scrollView に表示されません。ScrollView のコンテンツ パンを更新して、すべての画像の幅に合わせてみてください。お気に入り

self.scrollView.contentSize = CGSizeMake(幅、高さ);

この場合、高さは単一画像の高さになり、幅は (単一画像の幅 * 画像の総数) になります。

于 2013-02-27T12:20:49.247 に答える