0

NavigationBar を同じように動作させたいのですが、外観を変更したいと思います。これをオンラインで行う方法はたくさんありますが、どれが iOS 5.0 で最良の結果になるかはわかりません。ナビゲーション バーは次のようになります。

ここに画像の説明を入力

4

2 に答える 2

3

iOS 5 をターゲットにしているので、 Appearance プロキシを使用してUINavigationBar をカスタマイズすることは間違いありません。その後、独自の画像を簡単に設定でき、サブクラス化せずにアプリケーション内のすべてのナビゲーション バーに適用されます。

UIBarButtonItemをカスタマイズして、ナビゲーション バーのボタンをカスタマイズすることもできます。backButtonBackgroundImageForState:barMetrics:戻るボタンとその他のボタンのような方法がありbackgroundImageForState:barMetrics:ます。

于 2012-06-19T22:13:24.487 に答える
1

私も何年もこのことを探していましたが、簡単な解決策は見つかりませんでした! 私の友人とサンプル コードのおかげで、任意のビュー コントローラー クラスにインポートできるカスタム ナビゲーション バー クラスを作成しました。

.hファイル:

#import <UIKit/UIKit.h>

@interface NATitleBar : UIView {
    NSInteger tag;
}
@property ( nonatomic) IBOutlet UIImageView *imageView;
@property ( nonatomic) IBOutlet UILabel *label;
@property ( nonatomic) IBOutlet UIButton *back;
@property ( nonatomic) IBOutlet UIButton *home;

/**
 * Supports UIButton-style adding targets
 */

@end

.mファイル:

#import "NATitleBar.h"

@implementation NATitleBar
@synthesize imageView;
@synthesize label;
@synthesize back;
@synthesize home;

- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];

if (self) {
    NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"NATitleBar" owner:self options:nil];
    [self addSubview:[views objectAtIndex:0]];

    // customize the view a bit
    //self.imageView.layer.borderWidth = 1.0;
    //self.imageView.layer.borderColor = [UIColor colorWithWhite:0.4 alpha:0.4].CGColor;
    //self.imageView.clipsToBounds = YES;
    //self.imageView.layer.cornerRadius = 5.0;
}


return self;
}


#pragma mark - Overriden Setters / Getters

- (void)setTag:(NSInteger)aTag {
self.back.tag = aTag;
}

- (NSInteger)tag {
return self.back.tag;
}

@end

Nib ファイルの場合は次のようになります。

ここに画像の説明を入力

Nib ファイルにイメージを追加または削除して、必要に応じて GUI を作成できます。

ここで、カスタム ナビゲーション コントローラーを使用したいビュー コントローラーにクラスをインポートし、2 つのメソッド (「ホーム」ボタンが必要ない場合は 1 つ) を定義する必要があります.h

- (void) back;

.m:

- (void)back {
    [self.navigationController popViewControllerAnimated:YES];
}
于 2012-06-20T05:09:42.707 に答える