菜鸟教程小白 发表于 2022-12-12 22:29:54

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


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

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

<p>我做了一些调查并从 Apple 发现了这个:</p>

<blockquote>
<p>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)</p>
</blockquote>

<p>果然,当我查看破坏事件的提交的差异时:</p>

<p>这个:</p>

<pre><code>&lt;rect key=&#34;frame&#34; x=&#34;8&#34; y=&#34;8&#34; width=&#34;88&#34; height=&#34;48&#34;/&gt;
&lt;color key=&#34;backgroundColor&#34; white=&#34;0.0&#34; alpha=&#34;0.0&#34; colorSpace=&#34;calibratedWhite&#34;/&gt;
</code></pre>

<p>被替换为:</p>

<pre><code>&lt;color key=&#34;backgroundColor&#34; red=&#34;0.0&#34; green=&#34;0.0&#34; blue=&#34;0.0&#34; alpha=&#34;0.0&#34; colorSpace=&#34;custom&#34; customColorSpace=&#34;sRGB&#34;/&gt;
</code></pre>

<p>我能做些什么来解决这个问题?以下是我尝试过的一些事情:</p>

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

<p>2) 尝试恢复 XIB 文件。不能这样做,因为它是 XCode 8 升级的一部分。在选择所需的 iPhone 尺寸后,当您为 ViewController 调用“更新帧”时,颜色配置文件会发生这种变化。</p>

<p>任何人有任何其他建议都会很有帮助!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>难以置信。</p>

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

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

<pre><code>self.layer.cornerRadius = 0.5 * self.bounds.size.height;
</code></pre>

<p><strong>不知何故,这适用于 iOS 9.3 + XCode 7,但 <em>不</em> IOS10 + XCode 8</strong></p>

<p>为什么它<em>不应该</em>起作用是有道理的。在实例化时, View 尚未布局,因此它的框架可能是 {0,0,0,0}。</p>

<p>解决方案是将代码移到“layoutSubviews”中。</p>

<p>问题仍然是为什么该行为会导致清晰的背景。可能是因为不支持cornerRadius 0?</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - XCode 8 不正确的背景颜色 -Storyboard更新的颜色空间,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/39939088/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/39939088/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - XCode 8 不正确的背景颜色 - Storyboard更新的颜色空间