导航栏背景色修改&导航栏下面的横线消除

通常用的是此方法,来修改导航条的颜色

    self.navigationController.navigationBar.barTintColor = [Common hexStringToColor:@"47a8ef"];

那么,问题是,实际上系统导航栏其实是半透明状态的,颜色会有色差!
颜色会变的比平常的淡!!
我们只需要改变导航条的半透明状态 — translucent属性

 self.navigationController.navigationBar.translucent = NO;

这样,导航条的颜色 就会和我们设置的需要颜色一样

so,开始为这个设置 填上那些坑吧!!

以上设置之后,你会发现 你所画的view / scrollview //等 怎么又下移的64? 你会怀疑你之前设置的这行代码,

  self.automaticallyAdjustsScrollViewInsets = NO; //取消导航栏自动适应

是否未被添加,是否开启或关闭
,然而,无论你怎么设置这行代码,都不会产生效果,(还是空出64)

而如果你只是把你导航条下面的view//scrollview 的frame.origin.y 设置为0,(这样可以解决)
但是! 那又让你其他的frame一起要跟着变动!太麻烦了!

这时候,你需要这行代码;
设置一下自己view的初始位置

self.edgesForExtendedLayout = UIRectEdgeNone;

这样填写一下,导航条下面view 下移的问题就可以解决,同时,导航栏背景色的问题也得以解决, 还不需要修改你已经设置好的view的frame,
(ps: 这个时候,关闭不关闭导航栏的自动布局已经无关紧要了,应为只要关闭了导航栏的透明属性,self.automaticallyAdjustsScrollViewInsets = NO; 就会自动失效 )


导航栏下面还有条横线呢??
在导航条颜色 以及下面是scrollview颜色终于一样,位置终于接在一起之后,为啥还有条1xp不到的线栏在中间? 百度之后,也找到了一个合适的方法,方法不用多,够用就好!

主要思路,
在导航条上寻找到这根1xp不到的线, 然后在view的生命周期里,隐藏掉他们!!!

UIImageView *_lineVIew;
- (void)viewDidLoad {
    [super viewDidLoad];
    _lineVIew = [self findlineviw:self.navigationController.navigationBar];
    }
-(UIImageView*)findlineviw:(UIView*)view{
    
    if ([view isKindOfClass:[UIImageView class]]&&view.bounds.size.height<=1.0) {
        return (UIImageView*) view;
    }for (UIImageView *subview in view.subviews) {
        UIImageView *lineview = [self findlineviw:subview];
        if (lineview) {
            return lineview;
        }
    }
    return nil;
    
}
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    _lineVIew.hidden = YES;
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    _lineVIew.hidden = YES;
}
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    _lineVIew.hidden = YES;
}

终于,可以看到完美的样式了
上图:这里写图片描述
过了一段时间之后, 我才知道这个横线是咋来的 ,具体 这里有写 http://blog.youkuaiyun.com/iOSTianNan/article/details/51149377

以下是一个简单的横向酷炫呼吸效果导航栏的HTML代码示例: ```html &lt;nav class=&quot;navbar&quot;&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;About&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Services&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Portfolio&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/nav&gt; ``` 以下是CSS样式代码: ```css .navbar { background-color: #222; height: 50px; width: 100%; } ul { list-style-type: none; margin: 0; padding: 0; display: flex; } li { flex: 1; text-align: center; } a { display: block; color: white; text-decoration: none; padding: 15px 0; position: relative; } a:before { content: &quot;&quot;; position: absolute; width: 100%; height: 2px; bottom: 0; left: 0; background-color: white; visibility: hidden; transform: scaleX(0); transition: all 0.3s ease-in-out 0s; } a:hover:before { visibility: visible; transform: scaleX(1); } ``` 解释一下这个代码: - `nav`元素是导航栏的容器,我们设置了它的`background-color`为黑色,高度为50像素,宽度为100%。 - `ul`元素是`li`元素的容器,我们设置了它的`list-style-type`为`none`,`margin``padding`为0,以及`display`为`flex`,以便让子元素`li`在一行中平均分布。 - `li`元素是导航栏中的每个项目,我们设置了它的`flex`为1,以便它们平均分布在`ul`中。 - `a`元素是每个项目的链接,我们设置了它们的`display`为`block`,以便它们占据整个`li`元素的空间,`color`为白色,`text-decoration`为`none`,`padding`为15像素顶部底部,以及`position`为`relative`,以便我们可以在它们上面添加一个伪元素。 - `a:before`是在每个链接前添加的伪元素,它是一个白色的横线,我们设置它的`content`为空,宽度为100%,高度为2像素,位置为绝对定位,底部为0,左侧为0,背景色为白色,可见性为隐藏,以及一个`transform`属性,用于将它的比例缩放到0。 - `a:hover:before`是当鼠标悬停在链接上时,我们希望横线可见,因此我们设置了它的可见性为可见,以及一个`transform`属性,将它的比例缩放到1,以制造出酷炫的呼吸效果。 通过这些HTMLCSS代码,您可以创建一个简单而酷炫的横向呼吸效果导航栏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值