我需要調整UINavigationBar中UIBarButtonItem的垂直位置。我認爲有辦法做到這一點。將UIView添加到UIBarButtonItem並將UIButton添加到UIView。沒關係,如果你只有一個或兩個導航欄。但是我覺得如果你有幾十個UINavigationBar,特別是在一個故事板裏面,這太麻煩了。所以我做了一些研究,並找到了一個簡單的解決方案。這是使用類別。下面是我的源代碼:調整UINavigationBar中的BarButtonItem位置
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
-(void)viewWillAppear:(BOOL)animated
{
[self show:NO];
}
// do your override
-(void)viewWillLayoutSubviews
{
[self changeTheButtonPosition:self.navigationItem.leftBarButtonItem];
[self changeTheButtonPosition:self.navigationItem.rightBarButtonItem];
}
-(void)viewDidAppear:(BOOL)animated
{
[self show:YES];
}
#pragma clang diagnostic pop
-(void)show:(BOOL)show
{
self.navigationItem.leftBarButtonItem.customView.hidden = !show;
self.navigationItem.rightBarButtonItem.customView.hidden = !show;
}
- (void)changeTheButtonPosition:(UIBarButtonItem *)barButtonItem
{
if (barButtonItem)
{
UIView* customView = barButtonItem.customView;
// NSLog(@"custom view frame = %@",NSStringFromCGRect(customView.frame));
CGRect frame = customView.frame;
CGFloat y = SYSTEM_VERSION_LESS_THAN(@"7") ? 10.0f : 5.0f;
customView.frame = CGRectMake(frame.origin.x, y, frame.size.width, frame.size.height);
}
}
它完美iOS中7和iOS中6的第一個視圖控制器,但它不會爲推的UIViewController中的iOS 6工作,我找不到任何理由爲了那個原因。任何人都可以建議嗎?我的iOS 6代碼有什麼問題?
我在 找到另一個解決方案http://stackoverflow.com/questions/6566216/vertically-aligning-uinavigationitems/17434530#17434530雖然它比我的更難一些。 –