drawable转换为bitmap后透明背景图变黑???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了drawable转换为bitmap后透明背景图变黑???相关的知识,希望对你有一定的参考价值。

参考技术A drawabletoBitmap得到的bitmap显示出来背景还是透明的,你看看一些保存时候是不是设置成jpg了,png保存的是透明的。 参考技术B drawabletoBitmap得到的bitmap显示出来背景还是透明的,你看看一些保存时候是不是设置成jpg了,png保存的是透明的。

转换后iOS状态栏背景变黑

【中文标题】转换后iOS状态栏背景变黑【英文标题】:iOS statusBar background goes to black after transition 【发布时间】:2018-06-06 13:05:44 【问题描述】:

我正在从 UINavigationController 中的 VC1 推送到 VC2。 VC2 有一个透明的导航栏。

在 VC2 内部的 viewDidLoad 中:

self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.barTintColor = .clear
self.navigationController?.navigationBar.backgroundColor = .clear

当我按下后退按钮时,我想恢复导航栏(绿色),所以在 viewWillDissapear 里面我有以下内容:

self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.barTintColor = .green
self.navigationController?.navigationBar.backgroundColor = .green

但是我在转换时得到了这个奇怪的黑色状态栏:

Here is a sample project

这是预期的过渡:

【问题讨论】:

这与 statusBar 背景无关。尝试更改它的浅色内容,您将能够在两个屏幕上看到状态栏。这与您的导航栏有关,在中转时会变黑,并且您的状态栏是黑暗的,因此看起来像是状态栏问题。 所以我想更改导航栏的中转颜色以避免像 twitter 那样出现这个问题 设置self.navigationController?.navigationBar.backgroundColor = .clear 时,您会看到窗口也是黑色的。因此,将您的窗口背景颜色设置为某种颜色而不是黑色,那么您会看到不同之处。 我没有推特,请您也为推特添加相同的动画吗? @TheTiger 我添加了一张图片来显示我想要的目标 【参考方案1】:

你可以试试下面,

override func viewDidLoad() 
    super.viewDidLoad()

    UINavigationBar.appearance().backgroundColor = .clear
    UINavigationBar.appearance().barTintColor = .clear

    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)

    UINavigationBar.appearance().backgroundColor = .green
    UINavigationBar.appearance().barTintColor = .green

    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)

【讨论】:

这越来越好,问题是我还需要将 isTranslucent 设置为 true,因为我想要透明,当我返回时,我需要设置回 false 你可以设置 self.navigationController?.navigationBar.isTranslucent = true,它会给你同样的输出 @Godfather 对你有帮助吗? 它有帮助,但并不完全像我展示的那样。有了这个,导航栏在过渡后会出现很多问题,但无论如何还是谢谢!

以上是关于drawable转换为bitmap后透明背景图变黑???的主要内容,如果未能解决你的问题,请参考以下文章

转换后iOS状态栏背景变黑

透明背景在 WPF 中变黑

怎么拿到 drawable 的 宽高

如何在 android 中将 Bitmap 转换为 Drawable?

android 如何创建一张透明bitmap

Android Bitmap 与 Drawable之间的区别和转换