首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航条外观barTintColorα组件

导航条外观barTintColorα组件
EN

Stack Overflow用户
提问于 2015-11-12 17:34:21
回答 2查看 7K关注 0票数 3

我试图在我的NavigationBar中增加一些透明度,但没有成功。在我的AppDelegate's didFinishLaunchingWithOptions中,我有以下代码行:

代码语言:javascript
复制
let navigationBarAppearance = UINavigationBar.appearance()
navigationBarAppearance.barTintColor = UIColor.blueColor().colorWithAlphaComponent(0.2)
navigationBarAppearance.translucent = true

但是,不管alpha成分是什么,透明度都不会改变。我甚至尝试使用彩色UIImage

代码语言:javascript
复制
let colorImage = UIImage.imageFromColor(UIColor.blueColor().colorWithAlphaComponent(0.2), frame: CGRect(x: 0, y: 0, width: 340, height: 64))
navigationBarAppearance.setBackgroundImage(colorImage, forBarMetrics: .Default)

该方法也不会改变导航栏的透明度。在视图控制器中,我尝试:

代码语言:javascript
复制
self.navigationController?.navigationBar.tintColor = UIColor.blueColor()
self.navigationController?.navigationBar.alpha = 0.2
self.navigationController?.navigationBar.translucent = true

但还是没有运气。有人能帮我弄清楚我如何为我的导航栏增加透明度吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-12 18:39:34

给你伙计。只需遵循以下步骤

首先做一个扩展类。只添加一个新的空快捷文件,并将其命名为UIImageExtension或任何您感觉的

在该扩展名中编写以下代码

代码语言:javascript
复制
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。就是这样。

代码语言:javascript
复制
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

代码语言:javascript
复制
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!

    }
}

使用

代码语言:javascript
复制
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

希望能帮上忙!

编辑:刚刚将导航条更改为半透明,并且工作正常

屏幕截图

票数 12
EN

Stack Overflow用户

发布于 2015-11-12 17:51:48

在上一个示例中,您更改了tintColor,而不是barTintColor。无论如何,这三条线应该能用:

代码语言:javascript
复制
self.navigationController?.navigationBar.barTintColor = UIColor.greenColor()
self.navigationController?.navigationBar.alpha = 0.2
self.navigationController?.navigationBar.translucent = true

但是请记住,它将更改整个导航控制器的条条,因此您必须在从该视图控制器返回时考虑它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33677706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档