I'm making a new app for iPhone, and since all the graphics works are done for 3.5" support I don't want to change it for new 4" screens. The problem is when I'm running it in 4" simulator it automatically stretches the content to match the 4" size. I was wondering how can I force it to center the app vertically like old apps on iPhone 5?
I also configured my xibs and views:
Size = Retina 3.5"
Deployment = iOS 5.0
Use Autolayout = Unchecked
By deleting default-568h#2x.png (reference and file) from project. and also deleting the app from simulator and doing a "clean" and then "build" it will work. But there will be a warning for deleted image.
This is not possible in the newest version of Xcode.
Every new app created has automatically a default-568h#2x.png which enables the widescreen device support. You can't disable it.
But it is possible to create a new project with an older version of Xcode (around 4.4) which doesn't make this image so there won't be an widescreen device for this target.
Related
Originally I was used Xcode 5 (w/ iphone5) to create an app, and it worked good on Xcode 6 w/ iOS7/8, even on iPhone 6 and 6+, the app will automatically scale up to fit the new screen sizes. Recently I have migrated to Xcode 7 and found there is a black bars on top and bottom, so I follow the suggestions to include main.storyboard as launch screen file, but now the app will not be able to scale it up automatically. I found a discussion about this: Xcode 6 resizes app automatically for iPhone 6 and 6 plus
So I try to create an single view app from scratch (using Xcode 7), delete the Launch Screen File and Launch Image Sources, put something objects on the view, and then remove Auto Layout and Size Classes from main.storyboard, but the app does not expand to fill the new device size for 6+.
Is it possible to do so?
Simple way is Use xcassets, you need to Create a Launch Image Set and add all images with proper size
Create an assets file. File->Create->Resource->Assets Catalog
Select the file, and add New iOS Launch Image
Add an image for each size. Make sure that the resolution of the file has the same aspect ratio as the required file, but the resolution that you want your app to have. E.g. even though it expects 1242 x 2208 for iPhone 5.5, enter 640x1136, and your app will be scaled down to 320x568 with retina autoscaling
You can find out the expected resolution to determine the aspect ratio in the properties inspector at the bottom of the right tab.
Finally, go to your target's configuration under General->App Icons and Launch Images and set your launch image source to LaunchImage (or whatever you called the image).
I have XCode 6 project built with target OS as iOS 8.1 (I don't see earlier target in XCode).
All my view controllers are designed for iPhone 4 inch size. I see correct size when I launch my app on simulator (iOS 8).
However I get iPhone 3.5 inch layout on my iPhone 5C (4") - running iOS 7.1.1 - no matter what changes I make to storyboard. I tried changing storyboard settings like IB version to iOS 7.1 and later and so on, but to no avail.
The app runs totally fine, except that the top & bottom spaces appear black on my device - total height = 480 instead of 568.
What can be the reason?
The solution - as suggested by a kindred spirit on Apple forum:
Include a 4" launch image to the asset catalog
Clean up the project, delete derived data, delete the app from device
Re-Run the app on device.
320 X 568 screen is there...woohoo....
I have a simple out of box app that doesn't use the entire screen when I deploy it on a iphone5s. By default it creates a LaunchScreen.xib. I have not edited this file on purpose.
Black Bars top and bottom
Other answers suggest to add a Default-568h#2x.png launch image, but I am not using a launch image, and I am not sure where to add these. I see a place for this in the Images.xcassets by clicking the + icon and selecting New Launch Image.
Do I need to add a New Launch Image to Images.xcassets? If so what is the point of having a LaunchScreen.xib?
Thanks!
To get the app to display full screen:
As suggested here (https://stackoverflow.com/a/15328339/4347877), you must include a Default-568h#2x.png launch image (for iOS 7 or earlier). Or if your deployment target is iOS 8 or higher, you have the option of using LaunchScreen.xib.
Why Use LaunchScreen.xib?
For iOS 7 and earlier, app developers had to provide separate launch images for all screen sizes, resolutions and orientations their app supported. For universal apps, up to seven images were required: retina and non-retina versions for 3.5-inch iPhones in portrait and for iPads in portrait and landscape; and another retina image for 4-inch iPhones (the iPhone requires no landscape version because apps are always launched from the portrait-only Home screen).
Creating these images is a nuisance. Xcode 6 comes to the rescue by allowing you to specify a storyboard whose initial view controller will then be used as the app’s launch screen.
If you want to add a launch image instead of using LaunchScreen.xib:
Click on your Images.xcassets folder, right-click in the left pane, and select "New Launch Image." Once you have the correct launch image sizes for all devices you would like to support, drag each image to its respective slot (e.g. "Retina HD 5.5" or "iPhone Portrait 2x"). Before Xcode 6 introduced LaunchScreen.xib I used to create my launch image size here: http://www.appiconsizes.com.
Okay the solution I found came from this question. The answer from James Nick Sears actually fixes my problem. This is after adding the Launch Images. It should be noted that launch images using the images.xcasset is the prefered way to do this pre iOS 8.0 and the only way to make your app compatible with devices running iOS 7 and earlier.
I suggest using TiCons to create the icons, the mapping took me longer then it should have to figure out. In xcode you can see the expected image size for each device by selecting the empty image box and looking in the attribute inspector window on right.
But the real kicker is clicking the 'use asset catalog' button on the "App Icons and Launch Images" of your apps settings under the General tab. Once you click Migrate you can select your LaunchImages from the selection menu that resides where the button used to be, after "Launch Images Source". Without doing this your app won't work correctly on pre iOS 8 devices.
With-in a clean brand new iOS project I've:
added 2 images to the project "background#2x.png" and "background#3x.png"
added a XIB named "LaunchScreen.xib"
checked the XIB's "Use as Launch Screen" option
added a UIView sub-view to LaunchScreen.xib and set its image name to "background.png"
with-in the project settings, under the targets 'General' settings I've set the 'Launch Screen file' to "LaunchScreen"
Now when I launch the app on any of the devices list below the #3x image is displayed in the resulting launch screen when surely the #2x image should be used.
Problem devices (that all use the #3x resource):
iPhone 5 (iOS 8.0.0)
iPhone 6 (iOS 8.0.0)
iPhone 6 (iOS 8.0.2)
iPhone 5 Simulator (iOS 8.0.0)
iPhone 6 Simulator (iOS 8.0.0)
NOTE that the #2x image is distinctive from the #3x image so I can easily identify which one is being used.
At first I assumed this was a bug with the simulator and was staggered when it occurred on a real device also.
I assume this is yet another iOS8 bug however I guess there's also the possibility that its expected behaviour as the result of the launch screen being cached as a static image of some kind.
Any ideas or potential solutions?
EDIT:
For the benefit of others, I have subsequently found that if the images are instead added to an Images.xcassets image set then the correct behaviour is in-fact observed. HOWEVER this is not an ideal solution for us since we have a very specific image export process which means we are not using an Images.xcassets in out project (there are thousands of images in the app).
I have now also raised a Radar with Apple #18513968
http://openradar.appspot.com/18513968
I've just tried this myself, and get the same behaviour you have mentioned.
By setting the Launch Images Source to "Use Asset Catalog", and adding the Launch Image you can get each device to show its specific background. Some screenshots can be seen here:
Supporting iPhone 6 and iPhone 6+ with different launch/splash screen image for iPad Portrait and Landscape orientations
Looking into it a bit more, I found a website that mention:
http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/
"You can use the new adaptive UI features in Interface Builder to fit your layout to different screen sizes. If your scene requires screen-size-specific images, use asset catalogs to define different images per size class."
Maybe that is the only way to do it.
I am designing my iPhone app using storyboard and auto-layout. Everything works fine in iOS 7 on both 4 inches and 3,5 inches device.
On iOS 6.1 the app runs like is always on 3,5 inches device, even if is running on a 4 inches device, the black bars on top and bottom appears.
screenshot on the simulator:
Anyone with the same issue? how can i solve this problem?
I think are you Forget to adding splash screen Default-568h#2x.png in to you Project please check Property and set required splash-screen Default-568h#2x.png (640 × 1136 pixels)
Ones you add this image in to you working Project, Remove old Build from device or Simulatore, clear Project and re build and check Hope you issue will solve.
Yes, i'm agree with Nitin. In XCode 5 just create e new LaunchImage Set and add the standard, retina and R4 image in both iOS version (5,6 and 7).
Remember to set this set as default in your project info.
A quick fix is to replace Launch Images with your Storyboard.
In Xcode, go to Target > General, and then: