The new iPad Mini has a 7.9 inch screen size. Does it have a retina display? Will it automatically scale existing xibs and storyboards or do we have to create two versions o
If your app works on an iPad 1 or an iPad 2 it will work as-is on the new iPad mini. There is no retina display on the mini. From an app's perspective it's identical to the iPad 2.
Edit: It was asked how to determine when an app is running on an iPad mini. There is no API check for this. The screen size doesn't help. UI_USER_INTERFACE_IDIOM()
doesn't help. Until someone actually has one, there is no way to know if the UIScreenMode pixelAspectRatio
is any different (probably it's the same as the iPad 2).
This leaves only one possibility - to get the machine
from uname()
and hardcode a check against this value. This is never a desired approach. And as of this writing, we don't know what the value will be. Perhaps iPad5,x assuming the 4th gen iPad is iPad4,x.
Edit: So far I've seen a report that the iPad mini returns iPad2,5 (yes, that's a two comma five) as well as iPad2,6 and iPad2,7 for the machine name.
If the iPad Mini and the non-retina iPad's are going to be the same screen size regardless, couldn't you use something like what is used to determine whether the device screen is an iPhone 5 or iPhone 4:
#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )
So for iPad Mini, and non-retina iPad's, do:
#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )
and for retina iPad's do:
#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )
This should differentiate the two types of screens and bypass the need to pinpoint the exact model for scale purposes. The alternate method would be to use auto-layout, however I have a better feeling of control without it.
I hope this helps with the second part of your question. Good luck :)
iPad mini uses the same resolution as the non-retina iPads, iOS will use 1x graphics. Refer to this link... link
Build apps for iPad 2 resolution. The new iPad Mini is non-retina with a resolution of 1024x768 which means Apps that already worked on an iPad 1 or iPad 2 automatically work on iPad Mini.
I think Phil Schiller (Apple's Senior Vice President) said it best in press event unveiling the iPad Mini (approximately 53:00 into the keynote)
What screen size do we pick and why? And the team worked really hard thinking about this. We want an iPad that is capable of running all that amazing software written for iPad without the developers having to do any work...
He then goes on to say:
...And the pixels are even easier to remember because they're exactly the same. The original iPad and the iPad 2 are 1024 by 768 and the new iPad Mini is 1024 by 768. That means all of the software created for iPad works on the iPad Mini unchanged.
So, in summary and to answer your question, no the iPad Mini does not have a Retina display, and you don't have to do any additional work. The iPad Mini will utilize the storyboard or xib you have already created for iPads.
Then as far as detection goes, I can't find anything to prove this yet (because they haven't been released yet) but I'd be willing to bet that the following will output "iPad Mini".
NSLog(@"%@",[[UIDevice currentDevice] model]);
EDIT:
NSLog(@"\nMachine ID: %@\nModel: %@\nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);
NSString *machineName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
On my 16GB iPad Mini (Wifi only) this returns:
Machine ID: iPad2,5
Model: iPad
Localized Model: iPad
You dont have to do anything different. It should automatically work as mentioned by apple. The resolution is still the same as iPad.