質問

ナビゲーションコントローラベースのアプリを作成しました。 NVIGATION BARの下に開くビューは、ナビゲーション目的のためのTE UIIMAGEの上にUIIMageViewと「詳細開示」ボタンの束を持っています。

通知しているのは、これらのボタンはシミュレータに起動したときにデザイナ(インターフェイスビルダー)の位置から捨てられていることです。

私はナビゲーションバーに何かをするものがあると思われるが、ナビゲーションバーの高さに比例して下がることはない。

私は彼らに彼らの立場に握るように言う方法がわからない。

上部のナビゲオンバーでも、UIImageは画面の高さをオーバーフローしません。

上部のナビゲーションバーを使用するときには、どんなガイドライン/ゴッカにも知っておく必要がありますか?

Xcode 4を使用しています

ありがとう

編集:

- (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 ControllerをWindow.RootViewControllerに割り当てると、NAV BARが切り捨てられます。

編集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には、アプリのデリゲートとオブジェクトとしてのウィンドウが含まれています。ウィンドウにはその下のUIViewがあります。

StartScreenViewControllerのXIBファイルには、UIImageViewとボタンがあります。

役に立ちましたか?

解決

スクリーンショットを取り、それらがどの程度移動しているかを見てください。その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?=%5Biphone%5D + 20px


編集:
私はここで作品を逃した。これを回避するためには、MainWindow.xibファイルにUIViewを追加しなければなりませんでした....

1. appdelegate.hで、iBoutlet uiview * mainviewのプロパティを作成します。 2. @Propertyのことをして、.mファイルでそれを合成します
3. mainwindow.xibを開く
4. UViewをウィンドウにドラッグします(ViewControllerではない)、フルフレームにフィットするようにします。 5. IBの[ドキュメント]ウィンドウでAppDelegateオブジェクトを右クリックし、追加したばかりの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;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top