0

簡単ではないと思っていたのですが、なかなか大変でした!ナビゲーションコントローラーのナビゲーションバーとツールバーのスタイルを設定したい。私はそれらの両方に持ってもらいたい:

  1. カスタム背景画像、外観プロキシを使用できることはわかっていますが、これは次の点の要件を満たしていません。
  2. ナビゲーションバーとツールバーは、設定した背景画像と同じ高さである必要があります。フレームの高さを設定してみましたが、うまくいきませんでした。
  3. 最後に、ナビゲーションバーとツールバーにいくつかのボタン(特定の高さと幅で、固定/標準ではない)を追加したいと思いますが、ツールバー/ナビゲーションがUIViewのように動作することを願っています。

これらの3つのポイントを達成するにはどうすればよいですか?ありがとう!

4

2 に答える 2

1

より良い解決策を追加したいと思います (私の意見では): UINavigationBar と UIToolbar のカテゴリを追加します。たとえば、次のようになります。

UINavigationBar+myNavBar.m

#import "UINavigationBar+myNavBar.h"

@implementation UINavigationBar (myNavBar)
- (CGSize)sizeThatFits:(CGSize)size {
    UIImage *header = [UIImage imageNamed:@"Images/backgrounds/header"];
    CGSize newSize = CGSizeMake(header.size.width,header.size.height);
    return newSize;
}
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"Images/backgrounds/header"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

UINavigationBar+myNavBar.h

#import <UIKit/UIKit.h>

@interface UINavigationBar (myNavBar)
- (CGSize)sizeThatFits:(CGSize)size;
@end

UIToolbar のソリューションはほぼ同じです。

于 2012-07-14T15:41:26.100 に答える
0

このために私が行ったことは、組み込みのナビゲーション バーとまったく同じように見える画像を作成することでした。また、デフォルトに非常に近い戻るボタンも作成しました。もちろん、好きなことをすることもできます。これにはかなりの時間がかかりましたが、完了したら、それらを UIImageView および UIButton としてアプリにロードするだけです。やさしい。そして完全にカスタマイズ可能。

- (void) viewDidLoad {

    UIView *navBarView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,44)];

    UIImageView *navBarImg = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,44)];
    [navBarImg setImage:[UIImage imageNamed:@"navigationBarImage"]]; // the name of the .png file you made
    [navBarView addSubview:navBarImg];

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setBackgroundImage:[UIImage imageNamed:@"backButtonNormal"] forState:UIControlStateNormal];
    [backButton setBackgroundImage:[UIImage imageNamed:@"backButtonHighlighted"] forState:UIControlStateHighlighted];
    [backButton setFrame:CGRectMake(5,5,40,35)]; //Depends on how you do your button
    [backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [navBarView addSubview:backButton];

    //Repeat for any other buttons you wish to add. 

    [self.view addSubview:navBarView];
}

- (IBAction) backButtonPressed:(id)sender {
   [self.navigationController popViewControllerAnimated:YES];
}


//Pushing VC's
// I usually make a declared property for the VC and then:
- (IBAction) visitNextVC {
   NextVC *_nextVC = [[NextVC alloc] initWithNibName:@"NextVC" bundle:nil];
   [self setNextVC:_nextVC];
   [self.navigationController pushViewController:nextVC animated:YES];
}
于 2012-07-09T22:39:53.380 に答える