Внешний вид панели навигации альфа-компонента barTintColor
Я пытаюсь добавить прозрачности в мой NavigationBar
без успеха. В моем AppDelegate's
didFinishLaunchingWithOptions
У меня есть следующие строки кода:
let navigationBarAppearance = UINavigationBar.appearance()
navigationBarAppearance.barTintColor = UIColor.blueColor().colorWithAlphaComponent(0.2)
navigationBarAppearance.translucent = true
Но неважно, что такое альфа-компонент, прозрачность не меняется. Я даже пытался использовать цвет UIImage
:
let colorImage = UIImage.imageFromColor(UIColor.blueColor().colorWithAlphaComponent(0.2), frame: CGRect(x: 0, y: 0, width: 340, height: 64))
navigationBarAppearance.setBackgroundImage(colorImage, forBarMetrics: .Default)
Этот метод также не меняет прозрачность панели навигации. В контроллере представления я попытался:
self.navigationController?.navigationBar.tintColor = UIColor.blueColor()
self.navigationController?.navigationBar.alpha = 0.2
self.navigationController?.navigationBar.translucent = true
И до сих пор не повезло. Может кто-нибудь помочь мне понять, как я могу добавить прозрачность на панель навигации?
2 ответа
Вот, пожалуйста, мужик. Просто следуйте этим шагам
Сначала сделайте расширение класса. Добавьте только новый пустой файл swift и назовите его как UIImageExtension или как вам нравится
Напишите следующий код в этом расширении
import Foundation
import UIKit
extension UIImage{
static func imageFromColor(color: UIColor) -> UIImage {
let rect = CGRectMake(0, 0, 1, 1)
// create a 1 by 1 pixel context
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
color.setFill()
UIRectFill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Теперь перейдите к вашему классу ViewController и напишите следующий код и поиграйте с альфа. Это оно.
let image = UIImage.imageFromColor(UIColor(red: 0.071, green: 0.071, blue: 0.922, alpha: 0.2))
self.navigationController?.navigationBar.setBackgroundImage(image, forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.barStyle = .Default
Для Swift 3.0
import Foundation
import Foundation
import UIKit
extension UIImage{
static func imageFromColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
// create a 1 by 1 pixel context
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
color.setFill()
UIRectFill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
}
ИСПОЛЬЗОВАНИЕ
let image = UIImage.imageFromColor(color: UIColor(red: 0.071, green: 0.071, blue: 0.922, alpha: 0.2))
self.navigationController?.navigationBar.setBackgroundImage(image, for: UIBarMetrics.default)
self.navigationController?.navigationBar.barStyle = .default
Я также сделал образец. Посмотри. Образец в версии Swift 2.x
https://github.com/RajanMaheshwari/TransparentNav
Надеюсь, поможет!
РЕДАКТИРОВАТЬ: просто изменил панель навигации на полупрозрачный, и это сработало
В последнем примере вы изменили tintColor, а не barTintColor. В любом случае, эти три строки должны работать:
self.navigationController?.navigationBar.barTintColor = UIColor.greenColor()
self.navigationController?.navigationBar.alpha = 0.2
self.navigationController?.navigationBar.translucent = true
Но помните, что это изменит планку для всего контроллера навигации, поэтому вы должны подумать об этом, возвращаясь с этого контроллера представления.