0

-The Big Nerd Ranch GuideによるiOs開発の研究」(ConwayおよびHillegass)の章「UI​​Viewおよび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の画面よりも広い幅のビューインスタンスを作成することです。

  1. 最初に、「ウィンドウ」の境界を持つ新しい変数「screenRect」を宣言します。

  2. 次に、ウィンドウと同じ「screenRect」と同じフレーム寸法を持つ「UIScrollView」のインスタンスを作成しています。

  3. ページングを有効にします。

  4. 新しく作成した「scrollView」をビューの階層に追加します。したがって、親の「ウィンドウ」と子の「scrollView」(メインウィンドウと同じサイズ)があります。

  5. 新しい変数「bigRect」を宣言し、以前に宣言した「screenRect」と同じにします。

  6. bigRectの「width」プロパティを2倍に設定します。

  7. 実際に描画を実行するカスタムメイドのHypnosisクラスのインスタンスである新しい「ビュー」オブジェクトを作成します。ビューのフレームを「screenRect」フレームと同じに設定します。

  8. 新しく作成した「ビュー」をビューの階層に追加します。これで、3つのレベルの階層ができました:UIWindow-> UIScrollView-> HypnosysView

9.ここで、このコード行が何をするのか、なぜそれが必要なのかわかりません(screenRect.origin.x = screenRect.size.width;)

10)。次の行にHypnosisViewの別のインスタンスを作成するのはなぜですか?

11)。最後に、scrollViewにそのサイズを通知します。

4

1 に答える 1

1
9.Now here, I don't understand what this line of code does and why do we need it (screenRect.origin.x = screenRect.size.width;)

10). Why are we creating another instance of HypnosisView in the next line?

この例では、スクロールビューに並べて表示される2つのHypnosisViewを表示します。2つ目は画面外です。したがって、スクロールビューを表示するには、スクロールビューをドラッグ/ページングする必要があります。

screenRect.origin.x = screenRect.size.width

これは、2番目の催眠ビューを最初のビューの右側に配置するだけです。

于 2013-03-14T21:09:35.070 に答える