【问题标题】:ARGB color is different on iOS in comparison to Android与 Android 相比,iOS 上的 ARGB 颜色不同
【发布时间】:2016-07-18 08:37:11
【问题描述】:

以#2066E100(ARGB8888)为例,在Android中预览颜色: (深绿色)

然而,在 iOS 中,结果颜色是这样的:(浅黄色)

在我看来,Alpha 通道在 iOS 和 Android 中的工作方式不同。所以我的问题是,是否有一个通用的方案将 argb 颜色从 Android 转换为 iOS?

我想让 iOS 显示与 Android 相同的颜色。

编辑:更多图片(这次我使用#4066E100)

安卓:

iOS:

编辑:添加 swift 代码

if let context = CGBitmapContextCreate(&colors, dim, dim, 8, 4 * dim, CGColorSpaceCreateDeviceRGB(), CGImageAlphaInfo.PremultipliedLast.rawValue | CGBitmapInfo.ByteOrderDefault.rawValue) {
        if let cgimage = CGBitmapContextCreateImage(context) {
            let uiimage = UIImage.init(CGImage: cgimage)
            return uiimage
        }
    }

【问题讨论】:

  • 使用 Sip 或任何其他颜色选择器在 Mac 上选择渲染颜色,然后使用 iOS 应用程序的颜色代码。 itunes.apple.com/us/app/sip/id507257563?mt=12
  • 把ios改成和android一样
  • 在任一平台上显示此颜色的背景之间是否存在差异?在白色背景后,颜色应显示为浅黄色 - 在黑色背景后,颜色应显示为深绿色 - 这是由于 alpha 通道

标签: android ios colors argb


【解决方案1】:

我怀疑 ARGB 颜色在任一平台上的处理方式之间是否存在实际差异。在我看来,这里唯一的区别是它们显示的背景。

快速查看您提供的不带 Alpha 通道的颜色会显示为亮绿色。

Alpha 通道设置为 0x20,这使得颜色几乎是透明的,因此显示该颜色的背景颜色将对整体颜色产生很大影响。

黑色背景会显示您看到的深绿色,白色背景会显示您看到的亮黄色。

查看每个平台的背景颜色,并确保它们在两个平台上相同。那么颜色应该是相同的(不同的显示颜色清晰度不能承受)。

【讨论】:

  • 感谢您的回答。这对我来说很有意义。但是,当我做更多的实验时,结果仍然不正确。你能再检查一下我在问题中所做的修改吗?
  • 看起来android正在正确渲染,而ios正在添加白色背景。你是如何在 ios 中渲染这个的?
  • 我在另一个编辑中添加了 swift 代码。我将 argb 颜色保存为 UInt32 数组并命名为颜色。
  • 顺便说一下,在 iOS 中,我用 rgba 格式而不是 argb 来表示颜色,以匹配用于创建位图的 API 调用。
  • 恐怕我的 swift 技能有点生疏……您正在创建 UIImage,但它们是否被添加到 UIView 中?如果是这样,也许尝试在视图本身上设置 alpha 并从颜色中删除 alpha 分量?如果这不起作用,也许您应该尝试在 iOS 标签下打开一个关于如何将 alpha 通道正确应用于 UIImage 的新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多