0

UIScrollView内にカラーマップがあり、このマップのピクセルの色をサンプリングしようとしています。サンプルレチクルはスクロールビューの上に配置され、ユーザーはスクロールビューのコンテンツをレチクルの下に移動します。

ユーザーはタップジェスチャでレチクルをドロップできますが、ビューをレチクルの下に移動する追加オプションを提供したいと思います。

ズームされたビューのx、y座標が現在レチクルの下にあることを理解する方法を見つけようとしています。これまでのところ、特にズームイン/ズームアウトが関係しているため、このロジックはわかりません。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{

    CGPoint mapLocation = [tapGestureRecognizer locationInView:self.surfaceMap];

     NSLog(@"mapLocation (x,y) %.0f,%.0f",mapLocation.x,mapLocation.y);

    NSLog(@"contentOffset (x,y) %.0f,%.0f",self.scrollView.contentOffset.x,self.scrollView.contentOffset.y);

    //calculate where the marker is pointing to in the surface map while the scrollview is scrolling

    int frameWidth = self.surfaceMap.frame.size.width;
    int frameHeight = self.surfaceMap.frame.size.height;

//this is what I'm trying to calculate
    CGPoint trueLocation = CGPointMake(self.scrollView.contentOffset.x+frameWidth-self.surfaceMap.frame.origin.x, self.scrollView.contentOffset.y-self.surfaceMap.frame.origin.y);
    NSLog(@"trueLocation (x,y) %.0f,%.0f",trueLocation.x,trueLocation.y);

    [self colorOfPixelAtPoint:trueLocation];

}

どんな入力でも大歓迎です!

4

1 に答える 1

1

UIViewの次の2つのメソッドを確認することをお勧めします。

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;
于 2012-04-13T16:48:27.750 に答える