您的位置:首页 > 移动开发 > Swift

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

2015-07-13 19:58 459 查看
如何实现这个半透明效果呢?



步骤一:

为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及以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息