[iOS]巧妙的让导航栏透明的悬浮在ViewController上

分享一个很简单的让系统的导航栏透明的悬浮在ViewController上效果,就几行代码!

class SomeViewController : UIViewController {
    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
//        self.edgesForExtendedLayout = .All      // 要设置成全屏布局才能看到效果,默认就是全屏的
//        self.navigationController?.navigationBar.translucent = true // 必须开启半透明效果,默认就是开启的
        let clearImage = UIImage.colorImage(UIColor.clearColor())   // 创建一个透明的图片
        self.navigationController?.navigationBar.setBackgroundImage(clearImage, forBarMetrics: .Default)
        self.navigationController?.navigationBar.shadowImage = clearImage
    }
    ...
}


为了方便,扩展了一下 UIImage

//MARK:- 创建一个颜色图片
extension UIImage {
    class func colorImage(color: UIColor) -> UIImage {
        return self.colorImage(color, size: CGSize(width: 2, height: 2))
    }
    class func colorImage(color: UIColor, size: CGSize) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        color.setFill()
        UIRectFillUsingBlendMode(CGRectMake(0, 0, size.width, size.height), kCGBlendModeXOR)
        let cgImage = CGBitmapContextCreateImage(UIGraphicsGetCurrentContext())
        UIGraphicsEndImageContext()
        return UIImage(CGImage: cgImage)!.stretchableImageWithLeftCapWidth(1, topCapHeight: 1)
    }
}

效果如下:




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值