ナビゲーションコントローラのためのiPhone UIデザイン - ボタンを移動
-
14-11-2019 - |
質問
ナビゲーションコントローラベースのアプリを作成しました。 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;
.