2

XCode 8にアップグレードした後、私のビュー(Interface Builderでレイアウトされたもの)の一部が間違った色になりました。XCode 8の背景色が正しくありません - ストーリーボードアップデートされた色空間

特に、ログインページには通常、白い背景を持つ2つのカスタムビューがあります。 XCode 8にアップグレードした後、その背景色はクリアです!ひどいですね。

私はいくつかの調査を行い、アップルからこれを見つけた:Interface Builderのドキュメントで

色の値が正しくレンダリングし、コンパイル時に色空間を使用しています。以前のバージョンのXcodeでは、iOSおよびtvOSドキュメントに保存された色空間が誤って処理されていました。 Xcode 8は、デバイス上での知覚の外観を保持する方法で既存の色を変換し、ソースドキュメントの色空間またはコンポーネントの値を適宜更新します。 (7645087)

そして案の定、私は物事を破ったそのコミットの差分を見て:

この:

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

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

は、この置き換えられました

これを解決するにはどうすればよいですか?

1)インターフェイスビルダで、ビューを選択し、背景色のカラーパレットを開きます。歯車のアイコンをクリックし、SRGBを選択します。他のプロファイルも試してみましたが、何も動作していないようです。

2)XIBファイルを元に戻そうとしました。 XCode 8アップグレードの一部であったため、これを行うことはできません。このカラープロファイルの変更は、必要なiPhoneのサイズを選択した後で、View Controllerの「Update Frames」を呼び出すと発生します。

誰でも他の提案があれば助かります!

答えて

1

信じられないほどです。

私のカスタムビュー(UIViewのサブクラス)で、私は、「initWithCoder:」を「初期化」を介して呼ばれる共通のインスタンス生成コードのすべてを開催「commonInit」方法を、持っていたか、「initWithFrame:」

以内これはiOSの9.3 + XCodeの7が、ませ IOS10 + XCodeの8

に取り組んで、

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

をどういうわけか: "commonInit" 方式という、私はおそらくやっているべきではない何かをしていました3210

なぜの仕事をしてはならないのでしょうか。インスタンス化の時点では、ビューはまだレイアウトされていないので、フレームは{0,0,0,0}である可能性があります。

解決策は、そのコードを「layoutSubviews」に移動することでした。

なぜこの動作の原因が明確な背景になるのでしょうか?おそらく、0のcornerRadiusはサポートされていないためでしょうか?

1

カスタムビューについても同じ問題がありました(背景色を設定できません)。いくつかの検索と試行錯誤の末、私の問題は解決されました。この問題を解決するためのヒントがあります:

  1. あなたはXIBを開くと、「最初のデバイスビューを選択する」の通知が表示され、二つのオプションがあるでしょう。 「デバイスの選択」を選択することができます。

  2. 右側のサイドバーに「interface builder Document」があり、「open in」がXcode 7.xにリセットされています。あなたの設定を保存する通知があることを設定した後、 「保存して閉じる」を選択する必要があります。

これらの手順を実行すると、問題が解決する場合があります。

関連する問題