0

ナビゲーションコントローラーベースのアプリを作成しました。ナビゲーションバーの下に開くビューには、UIImageViewと、ナビゲーション用にteuiimageの上部にある一連の「詳細開示」ボタンがあります。

私が気付いているのは、これらのボタンがシミュレーターに表示されたときに、デザイナー(インターフェイスビルダー)の位置からずれていることです。

ナビゲーションバーはそれと関係があるのではないかと思いますが、ナビゲーションバーの高さに比例して下に移動することはありません。

私は彼らに彼らの立場を保持するように言う方法がわかりません。

UIImageは、ナビゲーションバーが上部にある場合でも、画面の高さをオーバーフローしません。

上部のナビゲーションバーを使用するときに知っておく必要のあるガイドライン/落とし穴はありますか?

xcode4を使用しています

ありがとう

編集:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    StartScreenViewController *controller = 
    [[StartScreenViewController alloc] initWithNibName:@"StartScreenViewController" bundle:nil];
    _navigationController = [[UINavigationController alloc] initWithRootViewController:controller];

    _navigationController.view.frame = CGRectMake(0,0, 320, 460);
    _navigationController.title = @"Test";
    //[self.window addSubview:_navigationController.view];

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

もう1つは、「addsubview」メソッドを使用するとナビゲーションバーが切り捨てられ、navコントローラーをwindow.rootviewcontrollerに割り当てると、ナビゲーションバー全体が表示されることです。

編集2

これが私のAppDelegate.hの外観です

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {

    IBOutlet UIView *mainView;
}

@property (nonatomic, retain) IBOutlet UIView *mainView;

@property (nonatomic, retain) IBOutlet UIWindow *window;

//@property (nonatomic, retain) IBOutlet UIViewController *viewController;

@end

これがAppDelegate.mのdidFinishLaunchingWithOptionsメソッドです

StartScreenViewController *controller = [[StartScreenViewController alloc] initWithNibName:@"StartScreenViewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
    navController.title = @"Test";
    navController.view.frame = CGRectMake(0, 0, 320, 460);
    [self.mainView addSubview:navController.view];    
    [self.window makeKeyAndVisible];

MainWindow.xibには、Appデリゲートとウィンドウがオブジェクトとして含まれています。ウィンドウの下にはUIViewがあります。

StartScreenViewcontrollerのxibファイルには、UIImageviewとボタンがあります。

4

1 に答える 1

1

スクリーンショットをいくつか撮り、それらがどれだけ下に移動しているかを確認します。20pxの場合、これは多くの人が抱えている問題です(私を含む)。ビューをIBと同じサイズに再定義することで修正しました。何らかの理由で、iPhoneはスマートになり、サイズを変更するのに役立ちますが、間違っている場合もあります。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
                navController.view.frame = CGRectMake(0, 0, 320, 460);
[self.window addSubview:navController.view];

それでも問題が解決しない場合は、https ://stackoverflow.com/search?q =%5Biphone%5D+20pxで検索してみてください。


編集:
私はここで作品を逃しました。これを回避するには、UIViewをMainWindow.xibファイルに追加する必要がありました。...

1。AppDelegate.hで、IBOutlet UIView * mainViewのプロパティを作成します。2 。@propertyを実行
して、合成します。 .mファイル内
3.MainWindow.xib
を開きます4.UIViewをウィンドウ(ViewControllerではなく)にドラッグし、フレーム全体に合わせ
ます5. IBのドキュメントウィンドウでAppDelegateオブジェクトを右クリックし、mainViewプロパティをに接続します追加したUIView。
6.AppDelegate.m..になりました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    navController.view.frame = CGRectMake(0, 0, 320, 460);

    //[self.window addSubview:navController.view]; // old broken way
    [mainView addSubview:navController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

およびAppDelegate.h:

@interface TestNavigationAppAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    TestNavigationAppViewController *viewController;
    IBOutlet UIView *mainView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestNavigationAppViewController *viewController;
@property (nonatomic, retain) IBOutlet UIView *mainView;
于 2011-05-16T13:14:05.167 に答える