1.在自己定义的导航栏中或者设计稿中经常需要去除导航栏的1px横线,主要是颜色太不协调了
去除之前的图片要去除这1px的横线,首先应该知道它是什么,在Xcode的界面调试中可以看到,它其实是UIImageView来的
找到横线是什么了···其实这是navigationBar的shadowImage,所以只要设置它为空即可,但是设置它为空之前应该先设置它的背景也为空,全部代码如下:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
完成效果如下(是不是一干二净?):
完成之后的效果既然导航栏的那一横线能去除,那tabbar那一横线也是能去除的了(其实也是shadowImage来的)···
方法一:
自定义UITabBarController
方法二:
[self.tabBarController.tabBar setBackgroundImage:[UIImage new]];
[self.tabBarController.tabBar setShadowImage:[UIImage new]];
反之,如果我们想自定义那一横线的颜色也是可以的,只要设置它的shadowImage即可。(如果有更加好的方法,希望交流一下~~)
网友评论
iOS9中有6个subview,1个UITabBarBackgroundView 和 4个UITabBarButton 和 1个UIImageView;
iOS10中有5个subview,1个_UIBarBackground 和 4个UITabBarButton,其中_UIBarBackground有2个subview,2个UIImageView.
if ([DEVICE_SYSTEM_VERSION compare:@"10.0" options:NSNumericSearch] != NSOrderedAscending) {
if (idx == 0) {
NSArray *subviews = subview.subviews;
[subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIView *subview = (UIView *)obj;
if ([subview isKindOfClass:[UIImageView class]]) {
if (idx == 1) {
subview.hidden = YES;
}
}
}];
}
}