1

pinchGestureに応答できる「A」という名前のベースUIImageViewがあり、それをピンチしました。サブビューを追加する前に、フレームをリセットしました。見栄えがします。次に、ベースUIImageView"A"にsubView"B"を追加しますが、 "B"には"A"のピンチ変換があり、big(small)です。フレームをリセットしました。なぜこれが起こったのですか。元のフレームでBを表示するにはどうすればよいですか。

 - (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer
{
    [self adjustAnchorPointForGestureRecognizer:gestureRecognizer];

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
        [gestureRecognizer setScale:1];
    }
}

- (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        UIView *piece = gestureRecognizer.view;
        CGPoint locationInView = [gestureRecognizer locationInView:piece];
        CGPoint locationInSuperview = [gestureRecognizer locationInView:piece.superview];

        piece.layer.anchorPoint = CGPointMake(locationInView.x / piece.bounds.size.width, locationInView.y / piece.bounds.size.height);
        piece.center = locationInSuperview;
    }
}
4

1 に答える 1

0

変換を UIView A に適用すると、その変換はすべてのサブビューに適用されます。この場合は B です。B が A のトランスフォームの影響を受けないようにする場合は、B を A のスーパービューに追加してみてください。

于 2013-06-22T23:37:37.027 に答える