我正在尝试为NavigationBar
添加一些透明度而没有任何成功。在我的AppDelegate's
didFinishLaunchingWithOptions
中,我有以下几行代码:
let navigationBarAppearance = UINavigationBar.appearance()
navigationBarAppearance.barTintColor = UIColor.blueColor().colorWithAlphaComponent(0.2)
navigationBarAppearance.translucent = true
但无论alpha组件是什么,透明度都不会改变。我甚至尝试使用颜色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
仍然没有运气。任何人都可以帮我弄清楚如何在导航栏中添加透明度吗?
答案 0 :(得分:10)
你去男人吧。只需按照以下步骤操作
首先制作一个扩展类。添加一个新的空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类并编写以下代码并使用 alpha 。多数民众赞成。
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!
}
}
<强> USAGE 强>
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
希望它有所帮助!
答案 1 :(得分:1)
在上一个示例中,您更改了 tintColor ,而不是 barTintColor 。 无论如何,这三行应该有效:
echo ('<option '.($trimmed_satBreakfast[0] == "") ? : '"selected"' : ''.' value="#">Select One</option>');
echo ('<option '.($trimmed_satBreakfast[0] == "y") ? : '"selected"' : ''.' value="y">Yes</option>');
echo ('<option '.($trimmed_satBreakfast[0] == "n") ? : '"selected"' : ''.' value="n">No</option>');
但请记住,它会更改 整个 导航控制器的栏,因此您必须在从该视图控制器返回时考虑它。