2

iphone開発初心者です。imageview をズームしたいのですが、次のコードを使用しています。

- (void)viewDidLoad
{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    self.scrollViewOutlet.minimumZoomScale=0.5;

    self.scrollViewOutlet.maximumZoomScale=4.0;

    self.scrollViewOutlet.contentSize=self.imagetobeZoomed.image.size;

    self.scrollViewOutlet.clipsToBounds=YES;

    self.scrollViewOutlet.delegate=self;

}

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{


    return self.imagetobeZoomed;
}

上記のコードを使用すると、画像をズームできますが、ズームすると画像が左下隅に移動するという問題があります。つまり、画像の位置を画面の中央に固定できません。

ズーム時に画像の位置を固定したままにしたい。これについて何か助けはありますか?

4

2 に答える 2

6

最後に、私は自分で解決策を見つけました.Hereは画像ズームの完全なコードサンプルです:)ここでは、ズームインおよびズームアウト時に画像の位置が固定されたままです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.scrollViewOutlet.minimumZoomScale=0.5;
    self.scrollViewOutlet.maximumZoomScale=4.0;
    self.scrollViewOutlet.contentSize=CGSizeMake(self.imagetobeZoomed.frame.size.width,       self.imagetobeZoomed.frame.size.height);
    self.scrollViewOutlet.clipsToBounds=YES;
    self.scrollViewOutlet.delegate=self;
}

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.imagetobeZoomed;
}


-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{   
    UIView *subView=[scrollView.subviews objectAtIndex:0];
    CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width)? 
    (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;
    CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height)? 
(scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;
     subView.center = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX, 
                             scrollView.contentSize.height * 0.5 + offsetY);

}
于 2012-08-30T08:01:53.260 に答える
1

NYOBetterZoomを試してみてください。これは確かにあなたの答えです。:)

于 2012-08-30T06:12:27.227 に答える