1

UIScrollView含む自動レイアウトで IB をセットアップしていますUIImageView。Evgenii の Github リポジトリを見て、どのように設定されているかを確認できます: https://github.com/evgenyneu/ios-imagescroll

スクロールビューは、ピンチツーズームを有効にするために使用されます。UIPanGestureRecognizer新しい を使用してスクロールビューを移動できるようにしたいUIAttachmentBehavior。これは自動レイアウトなしでうまく機能しますが、自動レイアウトが有効になっていると、スクロール ビューのコンテンツがちらつき、スクロール ビューが歪んでしまいます。

- (void)handlePanGesture:(id)sender
{
    CGPoint p = [_panGesture locationInView:self.view];

    if (_panGesture.state == UIGestureRecognizerStateBegan) {
        self.scrollView.userInteractionEnabled = NO;

        CGPoint center = self.view.center;
        UIOffset offset = UIOffsetMake(p.x - center.x, p.y - center.y);

        _attachBehavior = [[UIAttachmentBehavior alloc] initWithItem:self.scrollView offsetFromCenter:offset attachedToAnchor:p];
        [_animator addBehavior:_attachBehavior];
    } else if (_panGesture.state == UIGestureRecognizerStateChanged) {
        _attachBehavior.anchorPoint = p;
    }
}

私の推測では、scrollView と imageViews に設定された制約が添付ファイルの動作に干渉し、contentSizescrollView の内容とその制約に依存していると思います。

それを機能させる方法についてのアイデアをいただければ幸いです。

編集: scrollView/imageView の組み合わせの代わりに通常のビューでテストされ、同じ問題が存在します。したがってUIAttachmentBehavior、自動レイアウトでパン目的で使用する場合は問題になるはずです。

4

1 に答える 1

2

autolayout と UIKit Dynamics を同時に使用することはできません。両方のシステムが独立してビューのフレームを設定しようとしますが、お互いを認識していないため、ちらつきが発生します。

この場合、自動レイアウトを使用しないことをお勧めします。本当に使用したい場合は、ダイナミクス アニメーターを有効にする前にコンストレイントを無効にし、ダイナミクス アニメーションが終了したら再度有効にする必要があります。

于 2014-09-20T06:53:02.557 に答える