Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS - color on Xcode simulator is different from the color on device

Overview

The background color of my iPhone app in the simulator (iMac) looks different from the color on the device (iPhone 3GS).

EDIT (following section has been added)

The following are all different:

  1. story board color (xib file)
  2. simulator color
  3. device color

I suppose I should go with how it looks on the device.

Questions

  1. Is this is a common problem other developers face and is there a way to match the colors (systematic procedure) ?
  2. will the color look different on different versions of iPhone (3gs / 4 / 4s) or all the color ?
  3. Am I missing something, is there any specific color profile I should use ?
  4. Is there something like a rule of thumb where RGB values vary by a certain percentage ?
  5. In iPhone 4 and 4S, do the color match the simulator ? ( I don't have a iPhone4 and 4S, so I am not sure.)
like image 721
user1046037 Avatar asked Apr 06 '12 05:04

user1046037


People also ask

How do I add custom colors to Xcode?

To create a color from our palette, we can do it directly by selecting the Assets. xcassets folder (or creating our own . xcassets folder for colors) in the project navigator (Project Navigator). Then we right click and select New Color Set.

What is SwiftUI color?

SwiftUI only resolves a color to a concrete value just before using it in a given environment. This enables a context-dependent appearance for system defined colors, or those that you load from an Asset Catalog. For example, a color can have distinct light and dark variants that the system chooses from at render time.


2 Answers

Credit goes to @jtbandes for suggesting to send screenshots which led to the solution

I am just answering the question for completeness.

Steps I followed:

  1. Take a screenshot of image in storyboard
  2. Take a screenshot of image in device (use mail / photo stream back to your mac)
  3. Use color picker (part of mac OS color palette) to pick the same spot on both the screenshots
  4. Note down the RGB values (available on the mac OS color palette) of spots chosen in step 3
  5. compare both the RGB values and see the difference
  6. add the RGB offset to match the color.

My RGB offset (not be followed blindly)

based on my experience, i added the following RGB values to get the color I wanted, it is only rough and worked for me:

  • Red +12
  • Green +19
  • Blue +16

Different angles (best to keep it horizontal)

Holding the phone in different angles also gives different shades, keeping it horizontal did give the color

like image 180
user1046037 Avatar answered Sep 17 '22 12:09

user1046037


As others have pointed out, this is an issue of Color Spaces.

Two tasks need to be performed:

  1. Get the source color using the sRGB color space.
  2. Set the color in Interface Builder, using the sRGB color space.

Task 1

You can use Apple's Digital Color Meter app to sample the required color, using the Display in sRGB option, but the output is very limited.

Another option is to use an app like SipIt (available free on the App Store, last I checked). Make sure you are sampling in the correct color space by performing:

Preferences -> General -> Color Profiles -> sRGB 

You can also set your output format (e.g. hex string).

enter image description here Task 2

In Interface Builder, open the Color window, choose the the second pane, choose "RGB Sliders". Then click on the cog icon to choose the sRGB color profile.

enter image description here

Once done, paste your color value in to the Hex Color # field

You're done! Your colors should now match.

I am not affiliated with SipIt in any way. But I've been using it for a few years and it is very handy. I'd recommend it to any designer.

like image 30
Womble Avatar answered Sep 21 '22 12:09

Womble