//頭文件
//繼承 UINavigationBar
@interface MyNavigationBar : UINavigationBar
@end
//oc文件
#import "MyNavigationBar.h"
#define NavigationBar_H 44
@implementation MyNavigationBar
- (void)layoutSubviews {
[super layoutSubviews];
CGRect mFrame = CGRectZero;
for (UIView *aView in self.subviews) {
NSString*aString = NSStringFromClass([aView class]);
if ([@[@"_UIBarBackground"] containsObject:aString]) {
CGRect frame = aView.frame;
frame.size.height = NavigationBar_H;
aView.frame = frame;
NSLog(@"aView.frame,%f",frame.origin.y);
mFrame = frame;
aView.backgroundColor = [UIColor redColor];
for (UIView*bView in aView.subviews) {
NSString*bString = NSStringFromClass([bView class]);
if ([@"UIVisualEffectView" containsString:bString]) {
bView.hidden = YES;
}
if([bView isKindOfClass:UIImageView.class]&&bView.bounds.size.height <= 1.0){
bView.hidden = YES;
}
}
}
if ([@[@"_UINavigationBarContentView"] containsObject:aString]) {
aView.frame = mFrame;
}
}
}
@end
用法:
UINavigationController*nav = [UINavigationController new];
[nav setValue:[MyNavigationBar new] forKeyPath:@"navigationBar"];
即可!