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

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



步骤一:

为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及以上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值