問題
blueView
問題は、内での向きにあるようですscrollView
。のフレームを に設定していblueView
ますCGRect
(0, 47, 320, 320)
。このようにフレームを設定すると、暗黙的に言っていることの 1 つが次のようになります。
の上端blueView
は、 の上端から 47 ポイント下にありscrollView
ます。
それは完全に正当なことですが、それがあなたが説明する問題の原因です。 scrollView
デフォルトでは、四角形(0, 0, 320, 480)
が表示された状態で開始するように設計されているため、下にスクロールしません。contentSize
プロパティは、位置ではなく、 内のコンテンツのサイズのみを示しますUIScrollView
。あなたがそれを設定するとき、あなたは基本的に言っていますscrollView
:
コンテンツの起点から見て、コンテンツは幅 320 ポイント、高さ 640 ポイントです。
したがって、scrollView
座標の上にコンテンツがないことがわかっているため、上にスクロールしません(0, 0)
。
ソリューション
必要な機能を実現するには、3 つの手順を実行する必要があります。
- を上下にスクロール
contentSize
できる大きさに設定します。blueView
blueView
の縦中央に入れるscrollView
。
- をスクロールして、
scrollView
最初は が中心になるようにしblueView
ます。
- を上下にスクロール
contentSize
できる大きさに設定します。blueView
プロパティの正しい値を計算する必要がありcontentSize
ます。型CGSize
なので、 と の 2 つの部分が必要width
ですheight
。 width
は簡単です。横スクロールは必要ないようなので、画面の幅に合わせて320
ください。高さはもう少し難しいです。上下にスクロールしたときに画面の上下に触れるだけblueView
にしたい場合は、いくつかの計算を行う必要があります。正しい全体の高さは、画面の高さの 2 倍から の高さを引いたものになります。そう:blueView
scrollView.contentSize = CGSizeMake(320, 480 * 2.0 - blueView.frame.size.height);
blueView
の縦中央に入れるscrollView
。
簡単だ; center
blueViewのプロパティを設定するだけです。
blueView.center = CGPointMake(160, scrollView.contentSize.height / 2.0);
- をスクロールして、
scrollView
最初は が中心になるようにしblueView
ます。
Apple UIScrollView のドキュメントを確認すると、インスタンス メソッドが表示されます- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
。これはまさにscrollView
プログラムでスクロールするために必要なものです。必要な rect はblueView
、iPhone の画面サイズの を中心としたものです。そう:
CGRect targetRect = CGRectMake(0, scrollView.contentSize.height / 2.0 - 240,
320, 480);
[scrollView scrollRectToVisible:targetRect animated:NO];
このスクロールは必ず で行ってください。viewWillAppear
そうすれば、ユーザーがビューを見たときにすぐに準備が整います。
それだけです。ご不明な点がございましたら、お気軽にお問い合わせください。