轻扫/后退手势请看下面的编辑!
我不久前在iOS7中创建了一个自定义后退按钮。我的箭头和单词背靠它。我认为帕万的建议是一个好的开始。要创建自定义映像后退按钮就可以使用,
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();
的图像wordSpace是一个明确的PNG,我在Photoshop做,所以我的新的后退按钮图像不拉伸。您可能想要在顶部放置一个清晰的png,将图标向下推一点。使用photoshop中的大小,高度为你认为的调整应该是什么。你可能需要付出一点努力。并确保更改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),使它象真正的后退按钮的工作。
你应该考虑 “的UIImage *后退按钮= [[UIImage的imageNamed:@” blueButton“] resizableImageWithCapInsets:UIEdgeInsetsMake(12,12,12, 12)];”然后将此图像设置为后退按钮。 – Pawan
如果我这样做,“ios7-back-gesture”不起作用 – Bernat
你在这里提供了什么插图“UIEdgeInsetsMake(12,12,12,12)”。您需要根据您的要求进行更改。请按照此[参考链接](http://iosdevelopertips.com/user-interface/ios-5-customize-uinavigationbar-and-uibarbuttonitem-with-appearance-api.html) – Pawan