如何實現這個半透明效果呢?
步驟一:
爲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及以上。