-The Big Nerd Ranch GuideによるiOs開発の研究」(ConwayおよびHillegass)の章「UIViewおよびUIScrollViewのサブクラス化」;パンおよびページング
。-(BOOL)アプリケーションに入力される次のコードチャンク:didFinishLaunchingWithOptions:メソッド。
(HypnosisView-画面上で実際に描画を実行するカスタムメイドのクラスです。)
次のコードを理解できません:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//-------Adding a scrool option-----------
CGRect screenRect=[[self window] bounds];
// create the UIScrollView to have the size of the window, matching its size
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:screenRect];
[scrollView setPagingEnabled:YES];
[[self window] addSubview:scrollView];
// create the HypnosisView with a frame that is twice the size of the screen (with a big
// width)
CGRect bigRect = screenRect;
bigRect.size.width *=2.0;
HypnosisView *view=[[HypnosisView alloc] initWithFrame:screenRect];
// add the HypnosisView as a subview of the scrollView istead of the window
[scrollView addSubview:view];
// move the ractangle for the other HypnosisView to the right, just off the screen
screenRect.origin.x = screenRect.size.width;
HypnosisView *anotherView = [[HypnosisView alloc] initWithFrame:screenRect];
[scrollView addSubview:anotherView];
// tell the scrollView how big its virtual world is
[scrollView setContentSize:bigRect.size];
したがって、私たちの目標は、iPhoneの画面よりも広い幅のビューインスタンスを作成することです。
最初に、「ウィンドウ」の境界を持つ新しい変数「screenRect」を宣言します。
次に、ウィンドウと同じ「screenRect」と同じフレーム寸法を持つ「UIScrollView」のインスタンスを作成しています。
ページングを有効にします。
新しく作成した「scrollView」をビューの階層に追加します。したがって、親の「ウィンドウ」と子の「scrollView」(メインウィンドウと同じサイズ)があります。
新しい変数「bigRect」を宣言し、以前に宣言した「screenRect」と同じにします。
bigRectの「width」プロパティを2倍に設定します。
実際に描画を実行するカスタムメイドのHypnosisクラスのインスタンスである新しい「ビュー」オブジェクトを作成します。ビューのフレームを「screenRect」フレームと同じに設定します。
新しく作成した「ビュー」をビューの階層に追加します。これで、3つのレベルの階層ができました:UIWindow-> UIScrollView-> HypnosysView
9.ここで、このコード行が何をするのか、なぜそれが必要なのかわかりません(screenRect.origin.x = screenRect.size.width;)
10)。次の行にHypnosisViewの別のインスタンスを作成するのはなぜですか?
11)。最後に、scrollViewにそのサイズを通知します。