iOS7之前的UI為:
![]()
而在iOS7中,由于設(shè)計方面的原因,使得UI變?yōu)?
![]()
修改的方法重寫UINavigationItem的setLeftBarButtonItem和setRightBarButtonItem方法,使之與之前版本兼容;
代碼如下:
@interface UINavigationItem (margin)@end
@implementation UINavigationItem (margin)#if __ipHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1- (void)setLeftBarButtonItem:(UIBarButtonItem *)_leftBarButtonItem{ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; negativeSeperator.width = -12; if (_leftBarButtonItem) { [self setLeftBarButtonItems:@[negativeSeperator, _leftBarButtonItem]]; } else { [self setLeftBarButtonItems:@[negativeSeperator]]; } [negativeSeperator release]; } else { [self setLeftBarButtonItem:_leftBarButtonItem animated:NO]; }}- (void)setRightBarButtonItem:(UIBarButtonItem *)_rightBarButtonItem{ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; negativeSeperator.width = -12; if (_rightBarButtonItem) { [self setRightBarButtonItems:@[negativeSeperator, _rightBarButtonItem]]; } else { [self setRightBarButtonItems:@[negativeSeperator]]; } [negativeSeperator release]; } else { [self setRightBarButtonItem:_rightBarButtonItem animated:NO]; }}#endif@end
項目源碼不做任何修改,問題解決;
添加Button:
UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack];self.navigationItem.leftBarButtonItem = leftBarItem;[leftBarItem release];
新聞熱點
疑難解答