新建一个UINavigationBar的Category,如下:
@implementation UINavigationBar (CustomHeight)
- (CGSize)sizeThatFits:(CGSize)size {
// Change navigation bar height. The height must be even, otherwise there will be a white line above the navigation bar.
CGSize newSize = CGSizeMake(self.frame.size.width, 74);
return newSize;
}
-(void)layoutSubviews {
[super layoutSubviews];
CGRect barFrame = self.frame;
barFrame.size.height = 74;
self.frame = barFrame;
// Make items on navigation bar vertically centered.
int i = 0;
for (UIView *view in self.subviews) {
if (i == 0)
continue;
float centerY = self.bounds.size.height / 2.0f;
CGPoint center = view.center;
center.y = centerY;
view.center = center;
}
}
@end
注意:如果只重载sizeThatFits函数,则可能出现UINavigationBar宽度不正确的现象,因为在这时获得的frame可能不正确。