iOS 9.3 Color Management / Profiles - ios

I have many apps that rely on rgb value checking based on tapped pixels. If I tap a pixel that returns 128/128/138 then it opens up this particular thing from an array. With 9.3 this no longer works as I am getting crazy color values returned.
I did some digging and discovered that iOS now has color profile support. My files have no profile at all associated. This seems to be the problem.
Each display since retina 3 has returned slightly different saturations which I have had to adjust for. But this reveals a much bigger problem (for me at least).
Is there a way to disable color profile management in iOS 9.3? If so, maybe a check to see what OS I am on and only disable it then? Or maybe add a profile (ignored under 9.3 so good there) that will make them work on 9.3?
Thank you

Your best bet is to convert whatever you are drawing to screen (and then picking as pixels) to the colorspace returned by CGColorSpaceCreateDeviceRGB(). Using this colorspace, the compositing system will know to not do anymore conversions on your data.
Directly from the docs: "Colors in a device-dependent color space are not transformed or otherwise modified when displayed on an output device...".

Related

Understanding default font sizes in React Native

I've been working on a React Native app for the past few months, and something has always eluded me that I'm just now trying to get to the bottom of. I'm trying to standardize the font sizes within my app (for body, headers, etc.) and am struggling to understand where exactly React Native gets its default font size from. I've been testing in an iPhone 8 simulator running iOS 11, and through experimentation have come to the conclusion the default font displayed is 14 logical pixels (as in a brand-new element with no styling). However, checking the iOS style guidelines it would seem the default body text on iOS is intended to be 17pt. Although I don't a ton about device scaling, I've tried crunching the numbers in every online converter I could find, and could not come up with how 17pt may come close to 14 logical pixels (assuming RN uses the body font size by default). The only way I was able to roughly translate the two was if the DPI was around 90, but the DPI for iPhones is much, much higher. So might anyone be able to offer insight as to how default fonts are selected in React Native? Even hunting through the source code I couldn't find much. I'd like to be able to calculate the base size myself so I can scale the other font sizes according. Thanks in advance!
I suggest you to look at react-native-element's helper method normalizeText. It calculates the pixel ratio and set the texts fontSize accordingly.
Also you should also take in consideration of Accessibility Text Size Option in iOS. This option will be affecting all your app.

Color gamut in Xcode 8

Today I have installed Xcode 8(beta) and exploring Storyboards. Here we can now set background and tintColor for different traits. That's good news.
But here with trait collection(for example any height X any width) there is another selection of gamuts
Here is the screenshot
As I have searched for gamut, I found that it is related with color.
I have tried with different combination of gamuts but I am unable to see any difference.
The documentation is also not helpful.
The question is how the developers get the benefit of this feature?
Developers can get benefit from it because it gives a much greater control over your app's color profile. You can explicitly assign a color to display depending on the device's gamut.
A solid understanding of gamut is key here. Devices will distort "untagged" colors, that is, colors outside of their gamut. The P3 gamut has a more extensive range of display colors than the sRGB gamut. This graph should give you a good idea of exactly how much more extensive it is:
So if you create your designs on a monitor with a P3 gamut, say a Cinema Display, your colors may display differently on a device with sRGB gamut. However, it's entirely possible there is no change in the color if you pick a color that is within both gamut.

Labels and textviews showing up as misaligned in simulator when using autolayout

I've recently been implementing a new project on Swift, targeting iOS 8+. The UI mixes storyboards and XIBs, using autolayout for everything.
I recently took a look at the application using the "color misaligned images" debug feature in the iOS simulator. All my images are fine but for some reason almost every label and textview I have is showing up as magenta, meaning they are supposedly misaligned. All of these views are aligned using autolayout, which is supposed to be very good at avoiding misalignment. Any thoughts on what is going on here?
EDIT:
Nevermind, turns out it was just another Stupid User Error. I forgot I had a scaling function for forcing downscaling on some fonts based on screensize. This was returning fractions which was causing the misalignment.
maybe this will help?
http://blog.xebia.com/2013/07/19/ios-pixel-misalignment-why-its-bad-how-to-fix-it/
"How To Fix Pixel Misalignment?
Once you have found your culprit. It’s a good idea to start looking through your code to determine how the actual frame of the misaligned screen item is calculated. Some debugging will help you here. I’d look in any layoutSubviews or loadView calls for any divisions being performed on view frames. Also using Font metrics in your calculations is a common cause for misaligned images.
Most likely you will have found your culprit pretty soon. How to fix this? There are two ways to go about this. Either use a floorf or ceilf on the exact value causing the misalignment. Or pass the CGRect for the views frame through a CGRectIntegral call.
When it concerns an image on a retina device, make sure the retina version of that image is actually exactly twice the dimensions of the non retina image. Faulty dimensions on retina image resources is a common cause as well for pixel misalignment. So get check those image resources if they show up magenta."

iphone ios 7 homescreen mask isn't applied correctly to my icon

My problem is that my application's icon seems to be resized to fit the rounded-corner mask applied when displayed on the home screen.
EDIT: Here's the image:
My image follows the guidelines in these locations (mainly that it is 120x120, and doesn't have pre-rounded corners):
https://developer.apple.com/library/ios/qa/qa1686/_index.html
https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW4
I've tried:
1) Using an image catalog
2) Searching for the issue on this site. I looked through the first 5 paginations sorted by newest and can't find anyone who's had the issue...
3) Making sure that the image is specified in the info.plist
4) Checking the troubleshooting app icon issues on the apple developer site.
The icon always ends up drawn with the black edges.
Is there a way to programmatically make sure the mask is applied correctly?
Has someone else encountered the same issue?
It sounds like you might have the wrong DPI set in the icon PNG—if it’s something other than 72 (the screen’s nominal DPI in points), the system may be trying to scale it to match.
It looks like the DPI was correct. The problem was that there was a transparent background layer, wider than the image that Android Studio seemed to have added when it was run through that deployment process. The layer went unnoticed in preview because it doesn't highlight the transparency. Noticed it when I opened it in GIMP.
So it was a silly oversight on my part.

Inconsistent RGBA across devices

If you make a simple website with the code:
<div style='background-color: rgba(0,0,0,.05);width:50px;height:50px'></div>
and view it on various devices, you'll see very different colors.
On my iPhone and iPad, it looks white but on my MacBook you can see a definite light grey that looks close to #fafafa; I haven't tested thoroughly on other devices but I think that Android Chrome will sometimes display a third in between color.
This isn't an issue of different screen color capacities, because the iPad is definitely capable of displaying #fafafa.
So what's the story and is there any way to fix it?
rgba(0,0,0,.05) is an incredibly light color. A 5% tint is not visible on many lower end LCDs - especially 6bit panels. Personally, when I use RGBA I only tweak by 10% increments. Also, you will notice that #fafafa and rgba(0,0,0,.05) don't display the same because they aren't the same. #f2f2f2 is rgba(0,0,0,.05) (at least in Photoshop.)
You also have variances between the type of RGB. Devices also adapt differently based on lighting conditions - and they don't adapt the same way. There's also different screen types like AMOLED
From my experience that normally happens because of the contrast on the different screens and brightness settings. My suggestion is play with those.
Also check this for browser compatibility but those you mentioned should be ok:
http://css-tricks.com/rgba-browser-support/

Resources