请看下面的编辑!!!
不久前,我在 iOS7 中创建了一个自定义后退按钮。我的有一个箭头和后面的字。我确实认为 pawan 的建议是一个好的开始。要使用您可以使用的自定义图像创建后退按钮,
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked)];
[backButton setBackgroundImage:finalImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[backButton setTitlePositionAdjustment:UIOffsetMake(-20, 0) forBarMetrics:UIBarMetricsDefault];
self.navigationItem.leftBarButtonItem = backButton;
我的图像 finalImage 是两个不同图像的合成,但您可以只使用“背面”图像。但我认为这就是问题所在。我的图像是合成的,你可能也想合成一个,但在你的后退图标上方放置一个空白区域。我在图标右侧放置了一个空白空间来调整它的间距。这是代码,
UIImage *arrow = [UIImage imageNamed:@"back.png"];
UIImage *wordSpace = [UIImage imageNamed:@"whiteSpace.png"];
CGSize size = CGSizeMake(arrow.size.width + wordSpace.size.width, arrow.size.height);
UIGraphicsBeginImageContext(size);
[arrow drawInRect:CGRectMake(0, 0, arrow.size.width, size.height)];
[wordSpace drawInRect:CGRectMake(arrow.size.width, 0, wordSpace.size.width, wordSpace.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Image wordSpace 是我在 Photoshop 中制作的清晰 png,因此我的新后退按钮图像没有被拉伸。您可能希望在顶部放置一个清晰的 png,以将图标向下推一点。在 Photoshop 中将它的 size.height 设置为您认为应该进行的调整。您可能需要对此有所了解。并确保更改 CGSize 以使其适合您的图标和空白空间。
我的回话有点不对劲,所以我看了看
[backButton setTitlePositionAdjustment:UIOffsetMake(-20, 0) forBarMetrics:UIBarMetricsDefault];
我不得不稍微调整一下这条线以使其看起来尽可能好,但它最终给了我想要的 -20。我什至调整了我的第二个变量 0,这移动了实际的图标。 -5 将图标放得很远,但它是清除 png 的另一个选项。
现在处理您希望它成为实际后退按钮的事实。看看我发布的第一行代码。按钮上的操作是@selector(backButtonClicked)。所以你需要做的就是做那个方法,你应该很高兴!
- (void)backButtonClicked
{
NSLog(@"going back");
[self.navigationController popViewControllerAnimated:YES];
}
希望这会有所帮助。
编辑*****
我正在玩弄我的代码,并找到了一种更好的方法来移动后退图标。我只是用了一个*,因为我没有和你一样的*,但它的工作原理是一样的。
由于您并不真正想要标题,因此您可以使用此代码创建按钮,
UIImage *image = [UIImage imageNamed:@"781-ships-wheel.png"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked)];
只需将 781 的内容更改为您的图标名称即可。然后你可以用下面的方法来移动它,
[backButton setImageInsets:UIEdgeInsetsMake(20, 0, -20, 0)];
看看这张照片。
这会使图标显着下降,但我想向您展示这个想法。边缘插图的数字是顶部、左侧、底部和右侧。如果你不需要那样移动它,不要触摸左右,改变顶部和底部。但是请注意,如果您需要像我一样将其向下移动 20 点,(太多)您需要在底部偏移负数,否则图标将被压缩。这就是全零时的样子。
所以你几乎可以将它移动到任何你想要的地方,但你仍然需要设置 @selector(backButtonClicked) 让它像真正的后退按钮一样工作。