2

画像を表示し、ユーザーが必要に応じて画像を拡大/縮小したり、パンしたりできるシンプルなビューをセットアップしようとしています。私はautoLayoutを有効にしており、ビューはUIImageViewが埋め込まれたUIScrollViewで構成されています。どちらのビューも画面全体にサイズ変更されています。

Apple の ScrollViewSuite (「1_TapToZoom」サンプル) のロジックとコードを使用しましたが、すべて正しいようです。ただし、ビューをピンチすると、ScrollView/ImageView がすべて歪んでしまい、適切に応答しません。動作を説明するのは難しいですが、「ファンキー」と呼びましょう。サイズとアスペクトは一貫した方法で変化しません。

私の推測では、これは自動レイアウトの制約に関係しているということです。これに対する提案/修正はありますか?

4

1 に答える 1

0

発生する問題は、ズーム プロセス中にイメージビューの位置が変わることです。イメージビューの原点位置は、ズーム中に負の値に変更されます。これがぎくしゃくした動きが発生する理由だと思います。同様に、ズームが完了した後、imageView はまだ間違った場所にあるため、スクロールがずれているように見えます。

-(void) scrollViewDidZoom:(UIScrollView *)scrollViewこの間に UIImageView のフレームを実装してログに記録すると、元の変更が表示されます。

私は次のような戦略を実装することでうまくいくようになりました:

さらに、ズーム中に contentView のフレームを変更する

-(void) scrollViewDidZoom:(UIScrollView *)scrollView {
    CGRect cFrame = self.contentView.frame;
    cFrame.origin = CGPointZero;
    self.contentView.frame = cFrame;
}
于 2013-03-18T05:05:05.510 に答える