Ios 带图案图像的UINavigationBar后退按钮

Ios 带图案图像的UINavigationBar后退按钮,ios,objective-c,uinavigationbar,Ios,Objective C,Uinavigationbar,我需要根据设计师的计划创建一个导航栏后退按钮。“后退”按钮有图案图像,周边缝制皮革 这是: 我的问题是,有没有可能在没有太多麻烦和头痛的情况下创建这个?或者,如果可能的话,因为后退按钮的宽度不同 谢谢 更新 好的,在PartiallyFinite的帮助下,这很容易。如果正确设置UIEDGEINSET,它将保持左侧固定,右侧固定,然后根据后退按钮的宽度复制图像的中间部分 这是我用于“后退”按钮的图像: 这些是我的插入设置。你可以自己试试: backButtonImage = [backButt

我需要根据设计师的计划创建一个导航栏后退按钮。“后退”按钮有图案图像,周边缝制皮革

这是:

我的问题是,有没有可能在没有太多麻烦和头痛的情况下创建这个?或者,如果可能的话,因为后退按钮的宽度不同

谢谢

更新

好的,在PartiallyFinite的帮助下,这很容易。如果正确设置UIEDGEINSET,它将保持左侧固定,右侧固定,然后根据后退按钮的宽度复制图像的中间部分

这是我用于“后退”按钮的图像:

这些是我的插入设置。你可以自己试试:

backButtonImage = [backButtonImage resizableImageWithCapInsets:UIEdgeInsetsMake(5, 17, 5, 12)];

希望这对将来的人有所帮助。

您需要为按钮提供一个可伸缩的图像,以便它知道如何正确显示:

UIImage *buttonImage = [[UIImage imageNamed:@"backButtonImage"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 6)]
您不需要对图像本身执行任何特殊操作,但需要为可调整大小的图像指定适当的边缘插入,以指示图像边缘周围不应拉伸的区域,如上所示(该示例显示左侧15个像素,右侧6个像素的插入)。该区域应覆盖箭头和弯曲的右边缘,以便根据需要伸展中间区域。有关此方法的详细信息

更新:默认情况下,图像的可调整大小区域将平铺为新的大小,但是如果您想将其拉伸,则可以使用
resizebleimagewithcapinsets:resizingMode:
并传递
UIImageResizingModeStretch
来实现该行为。对于您的情况,平铺显然更好,因为它保留了缝合,但对于某些背景图像,拉伸是更好的解决方案。把这个放在这里是为了帮助将来看到这个的人

获得可拉伸图像后,可以使用以下代码更改“后退”按钮的外观:

[myBackButtonItem setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
或者,您可以使用以下代码为应用程序中的所有后退按钮设置此自定义外观:

[myBackButtonItem setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
当应用程序启动时运行此操作,它将影响应用程序中的所有后退按钮

请注意,与其他一些答案的建议相反,您不需要手动创建任何后退按钮。如果您创建一个
UINavigationController
,并以推荐的方式使用它(阅读相关内容,当您使用
pushViewController:animated:
按下视图控制器时,将为您创建一个导航栏和后退按钮。如果您使用全局
ui外观
代码片段应用自定义按钮样式,它将自动应用于您拥有的所有后退按钮

您可以阅读有关
setBackButtonBackgroundImage:forState:barMetrics:
的更多信息

网上还有许多教程,可以更深入地解释这项技术的工作原理和方法,这里有一些很好的教程:


您需要创建自己的BarButtonItem。您不能为“系统后退”按钮设置图像

 self.navigationItem.leftBarButtonItem =  [[[UIBarButtonItem alloc] initWithCustomView:buttonWithYourImage] autorelease];

您可以创建自己的UIBarButtonItem,并将其设置为当前视图控制器导航栏上的leftButtonItem:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"your_image"] style:UIBarButtonItemStyleBordered target:self action:@selector(yourFunction:)];
self.navigationItem.leftBarButtonItem = btn;

我在Appdelegate.m中使用它来自定义按钮。(“buttonBack”是您的图像名称)。希望它可以帮助您

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
UIImage *barButtonImage = [[UIImage imageNamed:@"buttonBack"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

return YES;
}

首先,你需要制作自己的后退按钮,并将图像设置为后退按钮

UIBarButtonItem * btn=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(changed)];

self.navigationItem.leftBarButtonItem=btn;

[btn setImage:[UIImage imageNamed:@"yourimagename"]];


-(void)changed
{


    [self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:0] animated:YES];

}

试试这个对你真的很有帮助…

创建自定义UIBarButtonItem查看我的代码对你很有帮助…这不是一个很好的解决方案,因为这可以通过外观API轻松完成。可能是:)但据我所知,应用程序中所有barButton项的外观都会受到影响。我认为这种行为不受欢迎的情况下会发生在哪里:)您可以使用
setBackButtonBackgroundImage:forState:barMetrics:
方法设置单个按钮的外观,而这不需要定制视图按钮。iOS 4有什么方法吗?我不知道,但现在很少有开发人员支持iOS 4,因为,iOS 4上的大多数用户之所以使用它,是因为他们的设备非常旧,或者已经越狱,所以这不是一个值得支持或提及的重要领域。如果使用导航控制器,将自动创建后退按钮。您不需要手动创建它们并将其指定给导航栏。