NavigationBar を同じように動作させたいのですが、外観を変更したいと思います。これをオンラインで行う方法はたくさんありますが、どれが iOS 5.0 で最良の結果になるかはわかりません。ナビゲーション バーは次のようになります。
2 に答える
iOS 5 をターゲットにしているので、 Appearance プロキシを使用してUINavigationBar をカスタマイズすることは間違いありません。その後、独自の画像を簡単に設定でき、サブクラス化せずにアプリケーション内のすべてのナビゲーション バーに適用されます。
UIBarButtonItemをカスタマイズして、ナビゲーション バーのボタンをカスタマイズすることもできます。backButtonBackgroundImageForState:barMetrics:
戻るボタンとその他のボタンのような方法がありbackgroundImageForState:barMetrics:
ます。
私も何年もこのことを探していましたが、簡単な解決策は見つかりませんでした! 私の友人とサンプル コードのおかげで、任意のビュー コントローラー クラスにインポートできるカスタム ナビゲーション バー クラスを作成しました。
.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];
}