私が見た最良の答えは、ここに投稿されたマーク ( https://stackoverflow.com/users/1051919/mark-kryzhanouski ) です: UIScrollView Zoom Does Not Work With Autolayout。
要点は、スクロール ビューにネストされたイメージ ビューをスクロール ビューの親に固定する必要があることです。iOS 6 リリース ノートのガイダンスにもかかわらず、どのビューが何の上に「浮かんでいる」かは直感的ではありません。この場合、スクロール ビューは 1 つのイメージ ビューにすぎません。
すべての IB アプローチを見つけることを期待して、これについて多くの実験を行いましたが、何も見つかりませんでした。IB でビュー階層を生成することはできますが、プログラムで制約を追加する必要があります。デフォルトの制約の一部またはすべてを削除できますが (主に、制約競合の警告を緩和するためだけに)、画像ビューをスクロール ビューの親、画像ビューの祖父母に結び付けるには常に Mark のコードが必要です。
これよりも単純なはずです-「うまくいくはずです」が、:
NSDictionary *viewsDictionary = @{ @"scrollView": self.scrollView, @"imageView": self.imageView };
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[imageView(width)]"
options:0
metrics:@{@"width": @(self.imageView.image.size.width)}
views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[imageView(height)]"
options:0
metrics:@{@"height": @(self.imageView.image.size.height)}
views:viewsDictionary]];