png files displaying as different colors on iPad w/ retina display vs iPad Pro - ios

Is there an efficient or programmatic way to force .png files to display as the same color regardless of whether they are viewed on an iPad Pro or an iPad with a retina display (for my purposes, iPads 3 and higher that aren't a Pro)
My iPad app contains a large set of art that is basically just red and blue lines all saved as .png files. They are meant to be viewed with the most commonly available red/blue 3D glasses on the market. We can't change the physical glasses that people use to look at the app to get that pop out 3D effect.
The tolerance between all of the iPads with retina displays has been fine for our purposes. But once we run the app on an iPad Pro, the blue is no longer the same color blue as on the retina display.
This is with the iPad Pro brightness at max, and True Tone either on or off and Night Shift off (also tried it with Night Shift on but it is just a different blue)
Is the best solution to have all of the art re-created and use a UIDevice call to display one set for an iPad with retina display and another set of art for an iPad Pro?
The app is written entirely in Objective C and is for iPad only.

Related

iOS - blur and buggy retina graphics on older devices running iOS7

I have been developing an app for iPad and was testing i on iPad 3 and iPad air with no problems at all. When i tried same app on iPad 2 the images were blur and some of them were not displaying properly even some were half visible half not visible.
As per my knowing the iOS7 only apps do not need non-retina graphics so i am using only Retina Graphics. So i tried using Asset Catalog too but same was the result.
Strangely when i use image#2x.png in xib it displays fine but do not show image in xib and when i use image.png it is displayed in xib but same issue when run on the device.
What i need to do to show images in xib too and would run fine on device?
Fisrt You MUST provide non-retina graphics in the asset catalog. You should understand that bigger images on old devices provides bigger memory and performance impacts.
You must pay attention also on odd measure, because if some geometric frames calculation results in decimal point such as 23.5 1.5 you are going to have antialiased elements in your interfaces.
You can avoid that wrapping frames into CGRectIntegral.

Hardware specific atlas with Sprite Kit is blown up on iPad

Watching talk 503 "Designing Games with Sprite Kit" from WWDC 2013, they say that one of the benefits of texture atlases is that you only need to drop a folder to XCode and it generate hardware specific atlases for different devices (OSX, iPhone, iPhone Retina, iPad...)
Is that correct?
I'm dropping a folder with a frames for a sprite animation and though it appears the same size on iPad 2 and iPad retina, its size is twice the correct size, and, of course, in the iPad retina the image is pixelated.
What am I doing wrong?
Short answer: Append a #2x suffix to each of your retina pngs inside your .atlas folder (example: heroimage#2x.png) - these will be then displayed correctly on Retina devices. This enables the retina display to calculate the ratio of pixels to points correctly (otherwise they'll appear to be double their size on Retina).
Files with the same name, but without the #2x suffix, will be the non-retina counterpart.
A slightly more complex answer: if you need to differentiate among more devices, iPhones and iPads, you can use the #2x~ipad suffix and #2x~iphone for the Retina iPad and iPhone, respectively. However, there have been reports of bugs here.
What was meant at WWDC is probably the fact that if you place images for different devices (with different suffixes) in your texture atlas, then the generated collective atlas images are indeed separate for each device. As it says in the iOS Developer Library:
Images for the same device are kept together—for example, all iPhone
images are in one file (~iphone.1.png), and all iPad images are in
another file (-ipad.1.png).

Poor OpenGL graphics Quality on First Generation iPad

I am using NinevehGL graphics library for rendering 3D models for an iOS application.
The rendering is quite good on the simulator and works well on iPhone 4S, iPad 2 and other recent devices.
But the quality is not as good on first generation iPad.
see the images
iPad(First Gen) As well as iPhone 3GS:
iPhone 4S:
Basically the gradient effect on iPad is very poor.. I am not worried about the antialiasing at the moment,, but I am worried about the clear difference in the gradient change of color.. in the first image one can clearly see the dark and bright regions.. but in the second image such regions are not so distinct.
Is this a device specific thing or are there any build settings that I can change to get better graphics for this version of iPad?

What resolution do I need to make images for universal iOS apps in?

I am making a Universal app on xCode 4.4, using Storyboards. I am making the images for this app in Photoshop. I want to make a background image that fills the whole screen.
What I want to know is:
What resolution do I make the images?
Do I need 1 for iPad and 1 for iPhone, or more?
How do you make it work with the iPhone 5 as well?
You might need up to 10 background images:
There's the retina iPad: 2048x1536, non retina iPad and iPad Mini: 1024x768, retina iPhone: 640x960, non-retina iPhone: 320x480 and the new iPhone 5 (retina only): 640x1136.
That's 5. If you want to support both landscape and portrait, then you have 10 combinations.
PS: If you decide to keep the status bar visible (as most apps do), then reduce the height with 20 pixels (40 pixels for retina displays). That's how much room is needed for the status bar.
You should consider the approach of using only one image. The user experience of most apps is poor if you dont respect the available canvas size.
And you might want to focus special areas of your artwork to the user.
I would propose you to implement different scenarios at least for iPad and iPhone.
The resolution itself is described within the specs. So use one for iPhone and one for iPad, the different logos are posted in two resolution, with a postfix #2x or for the new Appstore dimensions with another prefix, but all these details are within the specs.
My experience is that in most cases you have to organise the user interface separately in order to provide a good user experience.

How to target both iPhone and iPad resolution on Flash CS6

I am building a small game for iOS on Flash CS6 and I want to target both iPad and iPhone resolutions, also supporting retina display if possible. I've played with the movie properties and the Air for iOS settings, but I am still in confusion about the screen resolutions. I want to make a HD (retina-enabled) game, and I want to target the non-retina models too. Which resolution should I use? (I'll be having only landscape) Should I go with 2048x1536 (iPad Retina), 1024x768 (iPad non-retina), 960x640 (iPhone/iPod touch retina), or 480x320 pixels (iPhone/iPod touch non-retina)? I've set the resolution to High in Air for iOS settings, left the default resolution (960x640) unchanged, but when I tested it on iPad 3, the resolution wasn't HD, even though my graphics were vector (made in Flash). There was also background color visible around the corners, compensating for the aspect ratio difference of iPhone and iPad. Why can be the App rendering in non-retina resolution even though I've checked it at the settings for iOS? And more importantly, what is the best approach for targeting both screen resolutions in a single app?
Thanks,
Can.
Despite iOS being a resolution dependent OS, stage resolution doesn't matter. It will look the same if the stage resolution was 240x160 or 1920x1280. The device will render the game to it's native resolution. This is why you need to set the resolution in the publish settings: so that flash knows to add support for those resolutions for iOS. Setting the stage to 960x640 should be fine for the iPhone. When it publishes for iPad on the other hand, it will be built to it's native screen resolution, but because the iPhone and iPad have different aspect ratios, the iPad will have more space on the side. Since the game will be in landscape mode, it should be ok to simply put to thick black rectangles on the top and bottom of the stage.
As for the new iPad resolution, Flash isn't powerful enough to support that resolution, it will export to the standard iPad resolution of 1024x768 even if the resolution is set to high in the publish settings.
So pick the stage resolution based off of what device you favor, if you want the app to look best on the iPad's format, go for 1024x768, but the iPhone will have extra space on the sides in landscape mode. The same goes for the iPhone resolution I explained earlier. Although, if you'd like to fully support both, you can try many methods used to position GUI elements on the vast sea of Android Screens based off the Capabilities.screenResolutionX and Capabilities.ScreenResolutionY methods in flash.

Resources