問題
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。
簡単だ; centerblueViewのプロパティを設定するだけです。
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そうすれば、ユーザーがビューを見たときにすぐに準備が整います。
それだけです。ご不明な点がございましたら、お気軽にお問い合わせください。