改變狀態欄和導航欄的透明度

如何實現這個半透明效果呢?



步驟一:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章