iOS7之前的UI為:
而在iOS7中,由於設計方面的原因,使得UI變為:
修改的方法重寫UINavigationItem的setLeftBarButtonItem和setRightBarButtonItem方法,使之與之前版本兼容;
代碼如下:
@interface UINavigationItem (margin)
@end
@implementation UINavigationItem (margin)
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1
- (void)setLeftBarButtonItem:(UIBarButtonItem *)_leftBarButtonItem
{
UIBarButtonItem *spaceButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceButtonItem.width = -12;
if (_leftBarButtonItem)
{
[self setLeftBarButtonItems:@[spaceButtonItem, _leftBarButtonItem]];
}
else
{
[self setLeftBarButtonItems:@[spaceButtonItem]];
}
[spaceButtonItem release];
}
- (void)setRightBarButtonItem:(UIBarButtonItem *)_rightBarButtonItem
{
UIBarButtonItem *spaceButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceButtonItem.width = -12;
if (_rightBarButtonItem)
{
[self setRightBarButtonItems:@[spaceButtonItem, _rightBarButtonItem]];
}
else
{
[self setRightBarButtonItems:@[spaceButtonItem]];
}
[spaceButtonItem release];
}
#endif
@end
項目源碼不做任何修改,問題解決;
添加Button:
UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack];
self.navigationItem.leftBarButtonItem = leftBarItem;
[leftBarItem release];