Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I had the same problem like you and many other. After long time trying to fix it, finally I did it. This is the category you have to include in your *-Prefix.pch file. And that's all!</p> <p>UINavigationItem+iOS7Spacing.h</p> <pre><code>#import &lt;Foundation/Foundation.h&gt; @interface UINavigationItem (iOS7Spacing) @end </code></pre> <p>UINavigationItem+iOS7Spacing.m</p> <pre><code>#import "UINavigationItem+iOS7Spacing.h" #import &lt;objc/runtime.h&gt; @implementation UINavigationItem (iOS7Spacing) - (BOOL)isIOS7 { return ([[[UIDevice currentDevice] systemVersion] compare:@"7" options:NSNumericSearch] != NSOrderedAscending); } - (UIBarButtonItem *)spacer { UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; space.width = -11; return space; } - (void)mk_setLeftBarButtonItem:(UIBarButtonItem *)leftBarButtonItem { if ([self isIOS7] &amp;&amp; leftBarButtonItem) { [self mk_setLeftBarButtonItem:nil]; [self mk_setLeftBarButtonItems:@[[self spacer], leftBarButtonItem]]; } else { [self mk_setLeftBarButtonItem:leftBarButtonItem]; } } - (void)mk_setLeftBarButtonItems:(NSArray *)leftBarButtonItems { if ([self isIOS7] &amp;&amp; leftBarButtonItems &amp;&amp; leftBarButtonItems.count &gt; 0) { NSMutableArray *items = [[NSMutableArray alloc] initWithCapacity:leftBarButtonItems.count + 1]; [items addObject:[self spacer]]; [items addObjectsFromArray:leftBarButtonItems]; [self mk_setLeftBarButtonItems:items]; } else { [self mk_setLeftBarButtonItems:leftBarButtonItems]; } } - (void)mk_setRightBarButtonItem:(UIBarButtonItem *)rightBarButtonItem { if ([self isIOS7] &amp;&amp; rightBarButtonItem) { [self mk_setRightBarButtonItem:nil]; [self mk_setRightBarButtonItems:@[[self spacer], rightBarButtonItem]]; } else { [self mk_setRightBarButtonItem:rightBarButtonItem]; } } - (void)mk_setRightBarButtonItems:(NSArray *)rightBarButtonItems { if ([self isIOS7] &amp;&amp; rightBarButtonItems &amp;&amp; rightBarButtonItems.count &gt; 0) { NSMutableArray *items = [[NSMutableArray alloc] initWithCapacity:rightBarButtonItems.count + 1]; [items addObject:[self spacer]]; [items addObjectsFromArray:rightBarButtonItems]; [self mk_setRightBarButtonItems:items]; } else { [self mk_setRightBarButtonItems:rightBarButtonItems]; } } + (void)mk_swizzle:(SEL)aSelector { SEL bSelector = NSSelectorFromString([NSString stringWithFormat:@"mk_%@", NSStringFromSelector(aSelector)]); Method m1 = class_getInstanceMethod(self, aSelector); Method m2 = class_getInstanceMethod(self, bSelector); method_exchangeImplementations(m1, m2); } + (void)load { [self mk_swizzle:@selector(setLeftBarButtonItem:)]; [self mk_swizzle:@selector(setLeftBarButtonItems:)]; [self mk_swizzle:@selector(setRightBarButtonItem:)]; [self mk_swizzle:@selector(setRightBarButtonItems:)]; } @end </code></pre> <p><a href="https://github.com/marius-/UINavigationItem-iOS7Spacing">UINavigationItem+iOS7Spacing category on GitHub</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload