gpt4 book ai didi

ios - XCode 8 不正确的背景颜色 - Storyboard 更新了色彩空间

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:27:57 26 4
gpt4 key购买 nike

升级到 XCode 8 后,我注意到我的一些 View (在 Interface Builder 中布局)现在有不正确的颜色。

具体来说,我的登录页面上有两个自定义 View ,它们通常具有白色背景。升级到 XCode 8 后,他们的底色就清晰了!看起来很糟糕。

我做了一些调查并从 Apple 找到了这个:

Color values in Interface Builder documents correctly use color space during rendering and compilation. Earlier versions of Xcode mishandled color spaces saved in iOS and tvOS documents. Xcode 8 converts existing colors in a way that preserves their perceptual appearance on device, and updates either the color space or component values in the source document as appropriate. (7645087)

果然,当我查看损坏的提交的差异时:

这个:

<rect key="frame" x="8" y="8" width="88" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>

被这个取代了:

<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>

我该怎么做才能解决这个问题?以下是我尝试过的一些方法:

1) 在界面生成器中,选择 View ,然后打开背景颜色的调色板。单击齿轮图标,然后选择 SRGB。也尝试了其他配置文件,似乎没有任何效果。

2) 尝试还原 XIB 文件。不能这样做,因为它是 XCode 8 升级的一部分。当您在选择所需的 iPhone 尺寸后调用 View Controller 的“更新框架”时,颜色配置文件就会发生这种变化。

任何人有任何其他建议都会非常有帮助!

最佳答案

难以置信。

在我的自定义 View (UIView 的子类)中,我有一个“commonInit”方法,它包含所有通过“init”、“initWithCoder:”或“initWithFrame:”调用的公共(public)实例化代码

在那个“commonInit”方法中,我做了一些我可能不应该做的事情:

self.layer.cornerRadius = 0.5 * self.bounds.size.height;

不知何故,这在 iOS 9.3 + XCode 7 上有效,但 NOT IOS10 + XCode 8

不应该工作的原因是有道理的。在实例化时, View 尚未布局,因此它的框架可能是 {0,0,0,0}。

解决方案是将该代码移至“layoutSubviews”。

问题仍然是为什么这种行为会产生清晰的背景。可能是因为不支持 cornerRadius 为 0?

关于ios - XCode 8 不正确的背景颜色 - Storyboard 更新了色彩空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com