web-dev-qa-db-ja.com

iOS 7のUINavigation戻るボタンのカスタム画像

IOS 6.1で正常に動作する画像を含むカスタムUIBarButtonItemがあります。しかし、iOS 7にはtintColorがあり、この色を画像にオーバーレイします。 tintColor[UIColor clearColor]に設定すると、ボタンがすべて表示されません。

IOS 6のようにiOS 7に戻るボタンを表示するにはどうすればよいですか?助けてください?

iOS 6.1

iOS 7

35
Majid

Ios7でこのようにUIBarButtonItemを設定してみてください:-

UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];    
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:temp style:UIBarButtonItemStyleBordered target:self action:@selector(action)];

Apple Dev center discussion Forums の元の投稿

IOS7以降の両方のバージョンをサポートするには、system-versionおよび次のようなコードを設定します:-

UIImage *temp=nil;

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{ 
    temp = [UIImage imageNamed:@"btn-back.png"]; 
}
else
{ 
    temp = [[UIImage imageNamed:@"btn-back.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];
 }
23
Nitin Gohel

UINavigationBarの外観を使用して、カスタムの戻るボタンをグローバルに設定する必要があります。

[UINavigationBar appearance].backIndicatorImage = customBackButton;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = customBackButton;
42
Johannes

以下は、既存のターゲットアクションなどを台無しにしたくない人にはもう少し理にかなっているようです。コピーして貼り付けてください。また、これにより、単純にイメージのテンプレート/インプレッションを使用するのではなく、iOSがyourイメージをそのすべての才能で使用するように強制されます。

- (void)setCustomNavigationBackButton
{
    UIImage *backBtn = [UIImage imageNamed:@"arrow"];
    backBtn = [backBtn imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.navigationItem.backBarButtonItem.title=@"";
    self.navigationController.navigationBar.backIndicatorImage = backBtn;
    self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backBtn;
}

arrowは画像の名前です。

20
learner

Swiftバージョン:

var backBtn = UIImage(named: "return_menu")
backBtn = backBtn?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

self.navigationController!.navigationBar.backIndicatorImage = backBtn;
self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backBtn;
7
Bill Chan

この方法で試してください:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"yourImageName.png"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"yourImageName.png"];

これにより、独自のカスタムアイコンを提供するグローバルティントカラーのイメージマスクが作成されます。カラー画像では機能しません。

6
Rob Phillips

//ボタンに画像を追加する

UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setFrame:CGRectMake(0,0,30,30)];
refreshButton.userInteractionEnabled = YES;
[refreshButton setImage:[UIImage imageNamed:@"yourimage.jpg"] forState:UIControlStateNormal];

// ASSIGNING THE BUTTON WITH IMAGE TO BACK BAR BUTTON

UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
self.navigationItem.leftBarButtonItem = refreshBarButton;
0
Funny