IOS 自定義UINavigationController中navigationBar的高度

 

//頭文件

//繼承 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"];

 

即可!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章