2012-04-23 6 views
2

をバックに変更し、[UINavigationBarの外観]を使用します各viewDidLoadメソッド内のコード私は全プログラムのためにそれを一度やりたいと思います。は、私はこのコードを使用してそれを行うことができ、私は私のUINavigationBar</p> <p>の戻るボタンを変更したいボタン画像

私の試みはこれです:

UIImage *buttonBack30 = [[UIImage imageNamed:@"backag"] //16 5 
          resizableImageWithCapInsets:UIEdgeInsetsMake(1000, 1000, 1000, 1000)]; 
    UIImage *buttonBack31 = [[UIImage imageNamed:@"selback"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30 
                 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    //[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack31 
    //    forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack31 
                 forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 

    NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; 
    [attributes setValue:[UIColor colorWithRed:(163.0f/255.0f) green:(0.0f) blue:(0.0f) alpha:1.0f] forKey:UITextAttributeTextColor]; 
    [attributes setValue:[UIColor clearColor] forKey:UITextAttributeTextShadowColor]; 
    // [attributes setValue:[UIFont fontWithName:@"Helvetica" size:15] forKey:UITextAttributeFont]; 
    [attributes setValue:[NSValue valueWithUIOffset:UIOffsetMake(0.0, 0.0)] forKey:UITextAttributeTextShadowOffset]; 
    [[UIBarButtonItem appearance] setTitleTextAttributes:attributes forState:UIControlStateHighlighted]; 

が、それは、画像を引き伸ばし、私はしたくないこれは、その上にテキストを描画します。私はちょうど各ビューで同じサイズの画像が欲しいです。

ありがとうございます!このコードとが楽しむ

答えて

4

これが出て働くかもしれないのに役立ちます。上部にur appdelegateの下に追加してください。

@implementation UIViewController (CustomFeatures) 
-(void)setNavigationBar{ 
    // Set the custom back button 
    UIImage *buttonImage = [UIImage imageNamed:@"backag.png"]; 

    //create the button and assign the image 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:buttonImage forState:UIControlStateNormal]; 
    [button setImage:[UIImage imageNamed:@"selback.png"] forState:UIControlStateHighlighted]; 
    button.adjustsImageWhenDisabled = NO; 


    //set the frame of the button to the size of the image (see note below) 
    button.frame = CGRectMake(0, 0, 30, 30); 

    [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 

    //create a UIBarButtonItem with the button as a custom view 
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    self.navigationItem.leftBarButtonItem = customBarItem; 
    self.navigationItem.hidesBackButton = YES; 

    // Cleanup 
    [customBarItem release]; 
} 
@end 

とiOS 5.0以降では、あなたのviewDidLoad

+0

これは機能しますが、ビュー間を行き来するとボタンが点滅します。それほど大きな取引ではありませんが、クリーナー – itgiawa

+0

の移行が可能で、バックアクションの方法はどこですか? –

+0

素敵なハック!、バックメソッドswift 'self.navigationController?.popViewController(animated:true)' –

1

使用...

UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[leftButton setUserInteractionEnabled:NO]; 
[leftButton setImage:[UIImage imageNamed:@"backag.png"] forState:UIControlStateNormal];  
leftButton.frame = CGRectMake(0, 0, 30, 30); 
[leftButton addTarget:self action:@selector(YourclickeventClick:) forControlEvents:UIControlEventTouchUpInside];   
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton]; 
[leftbutton release]; 

希望は、これはあなたが...

23

[self setNavigationBar];を呼び出し、アプリ全体のすべてのバックボタンを変更するために、グローバル外観修飾子を使用することができます。

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"back_button_bg"] 
             forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 

背景画像良い結果を得るにはサイズ変更可能なイメージでなければなりません。

関連する問題

 関連する問題