1

UINavigationBarフレームを変えて の高さを変えてみました。ただし、アプリケーションをバックグラウンドに送信してから再度開くと、高さが元のサイズに戻ります。どうすれば修正できますか?

4

1 に答える 1

0

フレームは、plistやXMLファイルなどのリソースファイルに書き込むことができます。-(void)applicationWillEnterForeground:(UIApplication *)application' or次に、 -(void)applicationDidBecomeActive:(UIApplication *)application`のいずれかのアプリデリゲートファイルにplistをロードします。NSUserDefaultsも使用できると思います。

NSUserDefaults *frameSize = [NSUserDefaults standardUserDefaults];

//Put frame size into defaults
[sharedDefaults setObject:navigationBar.frame forKey:@"frame"];
[sharedDefaults synchronize];

次に、前述のApp Delegateメソッドで、次のようなことを行うことができます。

self.viewController.navigationController.frame = [sharedDefaults objectForKey:@"frame"];

これがお役に立てば幸いです。もしそうなら、投票することを忘れないでください。

- - - - - -編集 - - - - - -

この質問iOSで選択されたタブを見ると、どのタブが選択されているかを判断する方法がわかります。彼らが基本的に言っているのは、最初にアプリデリゲートを追加self.tabController.delegate = selfし、アプリデリゲートとタブバー付きのビューコントローラーがUITabBarControllerDelegateプロトコルに準拠していることを確認することです。次に、タブバーのあるView Controllerファイルで、プロトコルで定義されている次のメソッドを使用できます。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if (tabBarController.selectedIndex == 0) { 
    //The 0 is the first tab, but you can replace that with any other tab's index

         //Here you say that when said tab is selected, the navigation controller's frame is the stored length.
         self.navigationController.frame = [sharedDefaults objectForKey:@"frame"]; 
    }
    else{
         self.navigationController.frame = CGRectMake(frame, for, other, tabs);
    }
} 
于 2012-06-02T21:59:21.550 に答える