在開(kāi)發(fā)中逊笆,根據(jù)UI同學(xué)的設(shè)計(jì)稿有時(shí)是需要將self.view上的控件和導(dǎo)航條做到渾然一體的,做到這一點(diǎn)就要消除兩者間的第三者“分割線”银觅,導(dǎo)航條默認(rèn)是攜帶這條“黑線”的坞琴。
三種方式:
- 一行代碼就搞定的方式,但是我用在代碼中是沒(méi)有效果的陨囊。大家可以考慮嘗試一下弦疮。
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
- 兩行代碼就搞定的方式,這個(gè)是真實(shí)有效的蜘醋。親身體驗(yàn)過(guò)胁塞!
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
- 這個(gè)方式的代碼就有點(diǎn)多了哈,但是好處是靈活性比較好堂湖,更容易控制闲先。
思路:1、定義一個(gè)UIImageView屬性无蜂。2伺糠、找到導(dǎo)航條中“分割線”。3斥季、將找到的分割線賦值給屬性训桶。4、通過(guò)屬性的hidden屬性控制“分割線”的隱藏和顯示酣倾。
@property (nonatomic, strong) UIImageView *navigationImageView;
//在viewWillAppear中設(shè)置“分割線”為隱藏
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIImageView *navigationImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];
self.navigationImageView = navigationImageView;
self.navigationImageView.hidden = YES;
}
//在viewWillDisappear設(shè)置“分割線”顯示
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationImageView.hidden = NO;
}
//獲取分割線
-(UIImageView *)findHairlineImageViewUnder:(UIView *)view {
if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
return (UIImageView *)view;
}
for (UIView *subview in view.subviews) {
UIImageView *imageView = [self findHairlineImageViewUnder:subview];
if (imageView) {
return imageView;
}
}
return nil;
}