2009-06-28 11 views
10

2つの.xibファイルを持つシンプルなiPhoneアプリケーションを作成しました。UIViewが約10pxでナッジアップされている理由が分かりません

[window addSubview:myView]; 

と私はmyView2にビューを変更するにはUIButtonのためのIBActionで同じ操作を行います。アプリケーションでのアプリのデリゲートでは、私が呼び出して、最初の.xibファイルを表示起動フィニッシュをしました。私が見つけてる何

は、私は両方のビューのために、アプリを実行したときに約10ピクセルの白いバーがあるということです。私はまた、ボタンが10ピクセル(約)オフセットされていることに気付きました。だから私は、ビューが画面から10ピクセル離れて表示されているという印象を受けます。

これは、私はそれを修正する方法、または私は何が起こっているのデバッグを進めることができますどのように、起きて理由を任意のアイデア? .xibファイルを確認したところ、デバイスの高さ(つまり白い棒)を消費していたので、これはXcode内で問題に見えます。

編集:私は少し問題を絞り込んだ。私は、サブビューを読み込むために2つのメソッドを使用しています。 applicationDidFinishLaunchingの中に最初のビューをロードすると、すべてが問題ありません。しかし、もし私がwindowに2つのメッセージを[self originalView]メソッドで置き換えれば、すべてが少し変わってしまいます。私が見ることができるものから、

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
    //[self originalView]; <- I want to use this instead of the following two lines 

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

} 

-(void)endView{ 
    endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil]; 
    [window removeFromSuperview]; 
    [window addSubview:endV.view]; 
} 
-(void)originalView{ 
    viewController = [[MyAppViewController alloc] init]; 
    [window removeFromSuperview]; 
    [window addSubview:viewController.view]; 

} 

、私はいつも同じコード行を呼んでいる、それはapplicationDidFinishLaunching内部や[self originalView]にだが、window等が異なるオブジェクトであることが判明回しているようであればどんなに。

答えて

12

のUIViewControllerを通常の方法(すなわちpushing it on a UINavigationController)を使用する場合、それはそのビューのフレームを調整します。

サブビューを手動で追加するので、自分でフレームを調整する必要があります。原点は右上隅(ステータスバーの上部)にあります。ビューを20ピクセル下に移動したいとします。

+0

私が見たすべての例では、リストの階層を表示するためにUINavigationControllerを使用していますが、これはこれが唯一の目的のために使用されていますか? NavigationBarなどが不要な場合でも、表示するビューを制御するために使用できますか? –

2

は、インターフェイスビルダーでは、あなたは、(ステータスバーやナビゲーションバーなど)プログラム的に表示されますシミュレーインターフェイス要素を追加することができます。インスペクタで、ビューを選択し、Attributesタブに移動します。ここでは、ステータスバー、トップバー、またはボトムバーをシミュレートすることができます。ここで

5

は私のソリューションです:

// adjust the frame of subview which is going to be add 
self.navController.view.frame = CGRectMake(0, 0, 320, 460); 
[self.view addSubView:self.navController.view]; 

それは今私のために正常に動作し、幸運〜:)

1

あなたは間違った場所にこのUIViewControllerにpushVCを呼び出すように見えます。私も同じ問題がありました。前のUIViewControllerの階層で[self.navigationController pushViewController: animated:]viewDidLoadからviewDidAppear:に移動することによって解決されました。それはバグであるかどうかわからない -

1

は、それはあなたのルートコントローラで

  1. shouldAutorotate定義のいずれかとは何かを持っている、奇妙なギャップが現れるたびに、またはビューの一部は、ステータスバーの後ろに隠れていますしかし、すべてのサブviewcontrollersため、その関数の戻り値(通常はステータスバーの背後に隠されているのViewControllerにつながる)と一致滞在してみてください
  2. サブビューのwantsFullscreen定義 -
可能な場合はNOに設定

私はボットを持っていた私のアプリのhのバグとそれらを解決!

関連する問題