iPadxibを縦向きにしたUIViewControllerがあります。iPadが横向きで、そのビューコントローラーをUISplitViewControllerの詳細ペインに配置すると、それに合わせて自動的にサイズが変更されます。これはすばらしいことです。
ただし、-viewDidLoadでビューを構成しているとき、ビューの最終的なサイズはまだ横向き/サイズではありません。
-didRotateFromInterfaceOrientation:メソッドとそれに関連する他のメソッドは、UIViewControllerがすでに横向きにロードされている場合は呼び出されません。したがって、スクロールビューとそのコンテンツのcontentSizeをいつ、どこで適切に設定できますか?
スクロールビューを垂直方向にスクロールするだけにしたいので、scrollView内のcontentViewが、どの方向にあるかに関係なく、ViewControllerの幅に再フィットするようにします。
チェックする.frameまたは.boundsに関係なく、ビュー、スクロールビュー、またはSplitViewControllerの詳細ビューコントローラーでさえ、実際のサイズが表示されます。UISplitViewControllerを使用して横向きになっている場合、左側の幅は320ピクセルです。つまり、右側の幅は704ピクセルを超えてはなりませんが、ビューとスクロールビューのフレームと境界を確認すると、幅は768ピクセルと報告されます。これは正しくありません。
スクロールインジケーターが正しく表示されるので、私のスクロールビューの幅は明らかに704pxです。
私は何が欠けていますか?
これが-viewDidLoadの私のコードです...
CGSize textSize = [self.purchase.textDescription sizeWithFont:self.labelTextDescription.font constrainedToSize:allowedSize lineBreakMode:UILineBreakModeWordWrap];
CGRect textFrame = self.labelTextDescription.frame;
textFrame.size.height = textSize.height;
self.labelTextDescription.frame = textFrame;
CGRect contentFrame = self.contentView.frame;
contentFrame.size.height += textSize.height;
if (contentFrame.size.width > self.scrollView.frame.size.width) {
contentFrame.size.width = self.scrollView.frame.size.width;
}
self.contentView.frame = contentFrame;
[self.scrollView addSubview:self.contentView];
self.scrollView.contentSize = self.contentView.frame.size;