2012-01-31 6 views
0

これはおそらく尋ねられていると思いますが、多くを読んだ後、私は答えが見つからないと思います。iOS:アプリに追加された新しいビューのサイズ変更と位置付けは、ランドスケープで開始されました

アプリが横向きに回転すると、私はメインビューに新しいビューを追加します。だから私はと考えてnewView.bounds = rootView.bounds; newView.center = rootView.center;を追加

+------------------------------------------------------+ 
+ +---------------------------------------------+  + 
+ |       |     |  + 
+ |       |     |  + 
+ |  newView    | rootView  |  + 
+ |  (Landscape   | (Landscape) |  + 
+ | but portrait size)  |     | () + 
+ |       |     |  + 
+ |       |     |  + 
+ |       |     |  + 
+ |       |     |  + 
+ +---------------------------------------------+  + 
+------------------------------------------------------+ 

:新しいビューを構築し、追加されたコードに、このようなものです:

UIView * newView = .... 
[rootView addSubview:newView]; 

しかし、私は、私はこれを取得新しいビューを追加するときに、シミュレータは、風景に回転しているので、 rootViewの上に直接newViewを置き、代わりに私はこれだだろう:私は、彼らは私がしたにも関わらず異なっている理由を把握しようとしている

+------------------------------------------------------+ 
+ +---------------------------------------------+  + 
+ |            |  + 
+ |            |  + 
+ |--------------------------+ rootView  |  + 
+ |       | (Landscape) |  + 
+ |   newView   |     | () + 
+ | (Landscape size,  |     |  + 
+ | but offset)   |     |  + 
+ |       |     |  + 
+ |       |     |  + 
+ +---------------------------------------------+  + 
+------------------------------------------------------+ 

を境界と中心を同じに設定します。私はこれを取得見解をダンプ

rootView; frame = (0 0; 768 1024); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x98870a0>> 
newView ; frame = (-128 128; 1024 768); autoresize = W+H; layer = <CALayer: 0x6e470a0>> 

だから、rootViewはまだちょうど変換によって回転する768ワットのx 1024H、あると思われる、との境界とセンターを設定した後、新しいビューは、1024ワットのxです128ポイントでオフセットされています。

答えて

0

いくつかは、より多くの周りにプレーした後、私はこの思い付いた:

// Position the new view offscreen. 
CGFloat width = rootView.bounds.size.width; 
CGFloat height = rootView.bounds.size.height; 
newView.frame = CGRectMake(0, height, width, height); 
[rootView addSubview:newView]; 

// Animate to the center of the view. 
[UIView animateWithDuration:1.0 animations:^{ 
    newView.frame = CGRectMake(0,0, width, height); 
}]; 

それは動作しますが、よりよい解決策がある場合、私はちょうど思ったんだけど。

関連する問題