0

UIScrollView にそれぞれ異なる画像をロードするボタンがいくつかあります。これらの画像を拡大できます。何が起こるかというと、新しい画像を選択した後、前の画像がまだスクロールビューに残っています。そこに新しい画像を開く前に、スクロールビューをクリーンアップするにはどうすればよいですか?

これまでのコードは次のとおりです。

- (UIView *) viewForZoomingInScrollView: (UIScrollView *)scrollView{
    return imgView;
}
-(IBAction)buttonClicked: (UIButton *)sender{
    switch (sender.tag) {
        case 1:{
            UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Gath.jpg"]];
            self.imgView = myImageView;
            [myImageView release];

            scrollView.contentSize = CGSizeMake(imgView.frame.size.width, imgView.frame.size.height);
            scrollView.maximumZoomScale = 4.0;
            scrollView.minimumZoomScale = 1.0;
            scrollView.clipsToBounds = YES;
            scrollView.delegate = self;
            [scrollView addSubview:imgView];
        }
    }
}
4

2 に答える 2

0

以前のサブビューを削除せずに、新しいサブビューを追加し続けます。新しいイメージを作成する代わりに、既存の imageView のイメージ コンテンツを置き換えることができます。

これを置き換えます:

   UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Gath.jpg"]];
    self.imgView = myImageView;
    [myImageView release];

    self.imageView.image = [UIImage imageNamed:@"Gath.jpg"];

これを削除します

    [scrollView addSubview:imgView];

ストーリーボードなどの他の場所で、またはscrollViewを作成するときに、imageViewをself.imageViewにリンクしたと思います。

于 2013-02-03T14:15:20.290 に答える
0

あなたはこれを試すことができます、

[myImageView removeFromSuperView];

myImageView=nil;

myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Gath.jpg"]];

于 2013-02-04T07:49:08.217 に答える