1

私のコードでは、UI の向きが横向きに変わると、すべてのビューがそこに収まり、ユーザーがスクロールして表示できるように、contentSizeの高さを増やしています。UIScrollView

私のXIBには

/UIView - ビュー
  |- UIScrollView - scrollView
       |- スクロール可能にする必要があるその他のサブビュー

scrollView はビューと同じサイズで、自動サイズ変更マスクは全方向にサイズ変更するように設定されています。

scrollView の高さの寸法がビューの高さよりもはるかに大きいことに気付きました。

たとえば、いくつかのデバッグ ログがあります。

NSLog(@"%@ - self.view.frame=%@, self.view.bounds=%@", NSStringFromSelector(_cmd), NSStringFromCGRect(self.view.frame), NSStringFromCGRect(self.view.bounds));
NSLog(@"self.scrollView.frame=%@, self.scrollView.bounds=%@", NSStringFromCGRect(self.scrollView.frame), NSStringFromCGRect(self.scrollView.bounds));

そしてそれは印刷します

willAnimateRotationToInterfaceOrientation:duration: - self.view.frame={{0, 0}, {480, 219}}, self.view.bounds={{0, 0}, {480, 219}}
self.scrollView.frame={{0, 0}, {480, 399}}, self.scrollView.bounds={{0, 0}, {480, 399}}

Xcode IB でさえ、次のようになります。

UIScrollView と UIView の高さ

UIScrollViewビューと同じサイズにならないのはなぜですか?

ありがとう


アップデート

奇妙なことに、scrollView の高さを 460 (iPhone の縦長) に設定すると、Xcode/IB は、scrollView がその親ビューよりも小さいことを示します (これも同じ寸法を設定しています)。 ここに画像の説明を入力

しかし今、私は 1 つの XIB を持つテスト プロジェクトを作成しUIViewました。そこには 1 つだけが追加され、UIScrollView正常に見えます。UIScrollViewの高さは と一致しUIViewます。

そのため、おそらく私はどういうわけか XIB を台無しにしてしまい、Xcode はそれをうまく処理できません。

とにかく、プログラムで寸法を設定しています(回転、UI構成の変更などを処理するため)。期待どおりに機能します。これは私の最初の iOS プロジェクトであるため、UIScrollView. どうやらそうではありません:-)

コメントありがとうございます。

4

2 に答える 2

1

まず、UIScrollView の境界をそのスーパービューと 100% 同じになるように設定します。次に、スーパービューの autoresizedSubviews プロパティが YES に設定されていることを確認します。その後、すべてが正常に機能します。また、「willAnimate...」は、回転操作がまだ完了していないことを意味し、「didRotate」コールバックで新しいフレームを確認する必要があります。

于 2012-07-06T08:23:53.380 に答える
-1

UIView が 1 つしかない 1 つの XIB でテスト プロジェクトを作成し、そこに 1 つの UIScrollView を追加しました。正常に見えます。UIScrollView の高さは UIView の高さと一致します。

そのため、おそらく私はどういうわけか XIB を台無しにしてしまい、Xcode はそれをうまく処理できません。

コメントありがとうございます。

于 2012-07-07T14:09:49.917 に答える