如何移除CarbonKit中Segmented Pager下方的1px阴影线
如何移除CarbonKit Segmented Pager下方的1px阴影线
我之前也踩过CarbonKit这个坑!你用的那两行代码是用来修改UINavigationBar的背景和阴影的,但这条1px线是CarbonKit自己的Segmented Pager组件自带的,所以完全不生效~ 下面给你两种靠谱的解决方案:
方案一:直接修改CarbonKit源码(最彻底)
如果你是直接导入CarbonKit源码或者愿意修改Pod里的代码,直接找到组件的核心类:
- 打开
CarbonSegmentedView.m(对应Swift版本找CarbonSegmentedView.swift) - 找有没有初始化底部分隔线的代码,比如类似这样的:
把这段代码注释掉,或者直接设置self.bottomSeparatorView = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height - 1, self.frame.size.width, 1)]; self.bottomSeparatorView.backgroundColor = [UIColor lightGrayColor]; [self addSubview:self.bottomSeparatorView];self.bottomSeparatorView.hidden = YES; - 如果是layer阴影的话,找有没有设置
layer.shadow相关的代码,把shadowOpacity改成0:self.layer.shadowOpacity = 0; self.layer.shadowColor = [UIColor clearColor].CGColor;
方案二:不修改源码,通过遍历子视图隐藏(适合用Pod管理的情况)
如果不想动源码,可以在初始化完CarbonTabSwipeNavigation实例后,遍历它的子视图找到那条1px线:
// 假设你的CarbonTabSwipeNavigation实例是_tabSwipeNav CarbonSegmentedView *segmentedView = (CarbonSegmentedView *)_tabSwipeNav.segmentedControl; // 方式1:找底部的1px分隔视图 for (UIView *subview in segmentedView.subviews) { if (subview.frame.size.height == 1 && subview.frame.origin.y == segmentedView.frame.size.height - 1) { subview.hidden = YES; break; } } // 方式2:如果是layer阴影,直接关闭 segmentedView.layer.shadowOpacity = 0; segmentedView.layer.shadowColor = [UIColor clearColor].CGColor;
小提示
如果上面两种方法都没找到,你可以用Xcode的Debug View Hierarchy工具,对着这条线查看它的父视图和类名,精准定位到要修改的对象,这样就不会走弯路啦~
内容的提问来源于stack exchange,提问作者birdcage
相关产品推荐
相关产品推荐

