Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS 7中导航返回按钮的自定义图像_Iphone_Ios_Objective C_Ios6_Ios7 - Fatal编程技术网

Iphone iOS 7中导航返回按钮的自定义图像

Iphone iOS 7中导航返回按钮的自定义图像,iphone,ios,objective-c,ios6,ios7,Iphone,Ios,Objective C,Ios6,Ios7,我有一个自定义的uibarbuttonim,它的图像在iOS 6.1中运行良好。但是iOS 7有一个tintColor,它将这种颜色覆盖在我的图像上。如果我将tintColor设置为[UIColor clearColor]按钮不会同时显示 我怎样才能让我的后退按钮在iOS 7中像在iOS 6中一样出现?请帮忙 尝试在ios7中这样设置UIBarButtonItem:- UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRend

我有一个自定义的
uibarbuttonim
,它的图像在iOS 6.1中运行良好。但是iOS 7有一个
tintColor
,它将这种颜色覆盖在我的图像上。如果我将
tintColor
设置为
[UIColor clearColor]
按钮不会同时显示

我怎样才能让我的后退按钮在iOS 7中像在iOS 6中一样出现?请帮忙


尝试在ios7中这样设置
UIBarButtonItem
:-

UIImage *temp = [[UIImage imageNamed:@"theImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];    
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithImage:temp style:UIBarButtonItemStyleBordered target:self action:@selector(action)];
这是苹果开发中心的一篇原创文章

要同时支持iOS7版本和更低版本,请选中
系统版本
,并设置如下代码:-

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];
 }
UIImage*temp=nil;
如果([[[UIDevice currentDevice]系统版本]浮点值]<7.0)
{ 
temp=[UIImage ImageName:@“btn back.png”];
}
其他的
{ 
temp=[[UIImage ImageName:@“btn back.png”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}

//将图像添加到按钮

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;
试着这样做:

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"];

这将创建一个全局色调的图像遮罩,它将为您提供自己的自定义图标。不适用于彩色图像。

对于不想干扰现有目标操作等的人来说,以下内容似乎更有意义。只需复制和粘贴即可。这也迫使iOS使用你的图像和它的所有天赋——而不是简单地使用图像的模板/印象

- (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;
}

箭头
是图像的名称。

您应该使用UINavigationBar上的外观来全局设置自定义后退按钮

[UINavigationBar appearance].backIndicatorImage = customBackButton;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = customBackButton;
swift版本:

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

self.navigationController!.navigationBar.backIndicatorImage = backBtn;
self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backBtn;

不应将条形按钮项用作后退按钮。而是为导航栏设置
backIndicatorImage
。该应用程序在所有iOS版本中都必须具有相同的外观<代码>背面指示符号图像仅适用于iOS 7。我已经在ios6中使用了一个
mask
常量float colorMask[6]={222255,222255,222255};UIImage*image=[UIImage imageWithCGImage:CGImageCreateWithMaskingColor([[UIImage alloc]init].CGImage,colorMask)];[backButtonItem setBackgroundImage:image for状态:UIControlStateNormal barMetrics:UIBarMetricsDefault]我用的是ios5,你能帮我把你搞定吗,这很有效。然而,
UIImageRenderingModeAlwaysOriginal
在iOS 6中不起作用,我必须检查iOS版本<代码>UIImage*backImage=nil;如果([[[UIDevice currentDevice]systemVersion]floatValue]<7.0{backImage=[UIImage ImageName:@“btn back.png”];}其他{backImage=[[UIImage ImageName:@“btn back.png”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];}谢谢你,我刚刚编辑了我的答案,因为我支持这两个版本,以帮助其他人解决同一问题。还有一件小事,你应该在图片中删除.png。这样ios就可以拾取视网膜和非视网膜图像,或者设备特定的图像。我相信respondsToSelector:在这种情况下更合适。UIImage*temp=[UIImage ImageName:@“btn back.png”];如果([temp respondsToSelector:@selector(imageWithRenderingMode:)]){temp=[temp imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];}UIBarButtonimStyleBordered在iOS8.x中被弃用。使用UIBarButtonimStyleplain。我想补充一点,customBackButton图像应该使用
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal
,如下
[[UIImageImageNamed:@“imageName”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]以便显示图像的颜色。对iOS 9无效:否backIndicatorImage@Sebastian你是对的,修正了,忘记了这一点。可能是打字错误,自动补全不起作用。谢谢你注意到这一点!当出现时,如何删除所有后退按钮中的标题?Xcode/Swift似乎不知道这些,因为它们在自动完成中没有显示,它编译并运行。直到我添加了“imageWithRenderingMode”…谢谢!