剛剛看了 iOS --沒事擼一擼控件之UINavigationBar 這篇文章, 其中提到了 UINavigationBar
的滑動(dòng)漸變效果和去除底部橫線的方法, 深有其感, 現(xiàn)提供另一種簡(jiǎn)單的方法來實(shí)現(xiàn).
其實(shí)也沒有什么 special 啦, 就是通過顏色來生成一個(gè)UIImage, 設(shè)置成背景圖片即可.
通過顏色來生成一張純色的圖片:
func imageFromColor(color:UIColor)->UIImage{
let rect = CGRectMake(0, 0, 1, 1)
UIGraphicsBeginImageContext(rect.size);
let context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor)
CGContextFillRect(context, rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
使用的時(shí)候:
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
let random = CGFloat(arc4random() % 9) / 10
let color = UIColor(red: 0, green: 120 / 255, blue: 106 / 255, alpha: random)
let a = NSDate().timeIntervalSince1970
self.navigationController?.navigationBar.setBackgroundImage(imageFromColor(color), forBarMetrics: UIBarMetrics.Default)
print(NSDate().timeIntervalSince1970 - a)//0.00041508674621582
}
效果圖:
至于去除底部那一條難看的橫線, 恩...其實(shí)一行代碼就搞定了的....那就是:
self.navigationController?.navigationBar.shadowImage = UIImage()
效果圖:
預(yù)祝各位挖坑愉快.