改变状态栏和导航栏的透明度

如何实现这个半透明效果呢?

步骤一:

为UIImage类添加静态方法:

extension UIImage {

    static func imageWithColor(color: UIColor) -> UIImage {

        let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()
        CGContextSetFillColorWithColor(context, color.CGColor)
        CGContextFillRect(context, rect)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image
    }

}

该方法接受一个UIColor对象,然后返回一个该颜色的UIImage对象。

步骤二:

创建一定透明度的UIColor

let semiBlackColor = UIColor(red:0,green:0,blue:0,alpha:0.5)

#000为黑色,这里设置黑色的透明度为0.5。

步骤三:

设置状态栏和导航栏的透明度:

navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(semiBlackColor), forBarMetrics: .Default)
navigationController?.navigationBar.translucent = true // 一定要设置为true

动态改变该透明度可以通过UIScrollViewDelegate来实现:

func scrollViewDidScroll(scrollView: UIScrollView) {
    // 监听UIScrollView的属性contentOffset。
    if scrollView.contentOffset.y > 100 {
        // ...
    }

}

注:此方法只适用于iOS7及以上。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-30 18:32:34

改变状态栏和导航栏的透明度的相关文章

iOS 更改状态栏、导航栏颜色的几种方法

ios上状态栏 就是指的最上面的20像素高的部分状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是指的显示电池.时间等部分:背景部分:就是显示黑色或者图片的背景部分: (一)设置statusBar的[前景部分] 简单来说,就是设置显示电池电量.时间.网络部分标示的颜色, 这里只能设置两种颜色: 默认的黑色(UIStatusBarStyleDefault)白色(UIStatusBarStyleLightContent)可以设置的地方有两个:plist设置里面 和 程序代码里初始化设

android 自定义状态栏和导航栏分析与实现

效果 android 4.4之后,系统是支持自定义状态栏和导航栏的,举个最典型的例子就是bilibili客户端了(iOS版本和android版本能用两套完全不一样符合各自系统的设计ui,良心啊-),顶部状态栏为粉色,底部导航栏为半透明色: 接着QQ最新的版本6.2也使用了状态栏透明风格,但是出来的效果在不同版本,不同手机上,显示的效果真是差异很大(4.3版本是无法使用状态栏透明风格的,只是放出来做个对比): ------------------------------------ -------

TableView下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变

TableView 下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变 用storeboard 布局,之前尝试在storeboard中设置tableview的表头,但是那样弄出来的效果 表头不贴着上面,后来改成storeboard和代码 结合,最后实现的这个效果 下载链接: https://github.com/ShaoWenLe/TableViewThe-drop-down-amplification.git import UIKit let KScreen_Width = UIS

关于状态栏与导航栏的设置及自定义

关于状态栏和导航栏遇到的设置问题 1:statusBar字体为白色 在plist里面设置View controller-based status bar appearance 为 NO:设置statusBarStyle 为 UIStatusBarStyleLightContent 2:设置statusBar和navigationbar为一体 [nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"bg_navbar.png"

Android 4.4 沉浸式透明状态栏与导航栏

安卓4.4才有的沉浸式状态栏 在代码设置: if(VERSION.SDK_INT >= VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明导航栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } 直接调用上面2行代码可以

Android隐藏状态栏、导航栏

Android隐藏状态栏.导航栏 [java] view plain copy private void hideStatusNavigationBar(){ if(Build.VERSION.SDK_INT<16){ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }else{ int uiFlags = View

iOS获取状态栏和导航栏尺寸(宽度和高度)

iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; NSLog(@"status width - %f", rectStatus.size.width); // 宽度 NSLog(@"status height - %f", r

对系统版本为4.4及以上的开启 透明状态栏和导航栏(即沉浸式状态栏)

/*对系统版本为4.4及以上的开启 透明状态栏和导航栏(即沉浸式状态栏)*/ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); // Translucent status bar window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FL

【转】iPhone获取状态栏和导航栏尺寸(宽度和高度)

原文网址:http://blog.csdn.net/chadeltu/article/details/42708605 iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: [objc] view plain copy // 状态栏(statusbar) CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; NSLog(@"status width