I use a Launch Screen (xib) in my app to overcome the problem of the resizeable screen, since i don't always want add Launchscreens everytime, Apple create a new iPhone with a different screen resolution.
In my launchscreen, i placed a UIImageView directly in the center of the view using constraints. The image shows the logo of the company i work for.
The problem is, that sometimes the image is being hidden (mostly after install and first launch) and sometimes it shows (mostly after a view times using it). I'm not quite sure, what the problem is. Is it because at the first-launch-time(s) it has to load many ressources?
Figured out the problem: It seems, that if there isn't enough disc space left on the device, it doesn't show the xib's (Launch-Screen's) Image. iOS at some point clears out some disc-space (i guess from NSLibraryDirectory) and than the images show again.
If this is a major problem to any of your apps, use Launch-Images instead.
Related
So I am new to iOS development and I have a question about the launch screen.
My app will have an image (that loads when the app opens from the internet) this can change anytime the image is updated on the website, so what is the done thing when designing a launch screen as the image could be different to what is on the launch screen?
Thanks
In Apple's Human Interface Guidelines, they suggest that the launch screen should match the first screen of your app. In the example they give, the only parts of the launch screen are the non-dynamic parts (the UI around the web content).
Design a launch screen that’s nearly identical to the first screen of your app. If you include elements that look different when the app finishes launching, people can experience an unpleasant flash between the launch screen and the first screen of the app.
The launch screen is presented before your app loads, and it should be used for static content only.
If there are any UI elements around the image that is displayed, show those in your launch screen. If not, choose a neutral background color that works well with the theme of your app.
Omit the image. A launch image should be a bare outline of what the screen will certainly contain. It might be no more than the correctly-colored background. It is just to cover the gap between nothing and something.
Read the Guidelines: https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/ Look at the picture on the left. That's a launch screen — basically empty.
LaunchScreen image is always the same..
You can set it in LaunchScreen.storyboard
The launch screen is used to display something whilst your app is initialising, making network requests or whatever.
You shouldn't be looking to load dynamic content here as if a user is on a very slow connection then they wont see anything until your image has loaded. This is why it doesn't have a view controller associated with it. it should be static.
You should only really be loading your logo or something in here, you could just use the company name. it will only show for a short amount of time. then when assets change, submit the changes to store
I have some issues with the launch screen images, when the app is started. I currently using the default image set that contains the #1,2,3x images, but I figured out that there is also an Launch Image Set. This will solve also the problem of different iPhone sizes with the export for multiple screen resolutions. But after uploaded the correct images to the launch image set, I can't select them within an UIImageView in the launch storyboard. Is this even possible and if so, how can I use that in storyboards? Or is there another way to do this?
I cycle through an x amount of images that will randomly display when opening the application. So every time you open the app, it will display another image.
You can't use launch images in the rest of your storyboards. You should create a normal image set to use in the rest of your app and use constraints to get it to adjust size to whatever device the app runs on.
The launch image is shown while your app is loading ("launched", loaded to memory). So you can not run any code at this time.
As the launch time is not that long, a common approach is to initially show a view, that looks 100% identical to the actual launch screen for 3 seconds or so. So you can do run code, animations or such there.
In my personal user experience this is an ugly approach, as you let the user wait for no reason but to show of you CI.
To sum it up: You can not have a random initial launch screen.
Find more information about how to actually setup a launch screen in this answer.
I'm making an app with a different screen for its first run. Once it has completed its first run, this screen is never shown again. The issue I have is that my launch image is built to look like the view that the user sees every other time they run the app, so at first run the loading screen looks weird. Is there any way to have one loading screen for first run and one loading screen for other runs? Thanks
You cannot have multiple or dynamic launch images. Even with the new storyboard/nib launch files, they are still quite static.
Make sure to open an enhancement report with Apple, requesting this feature.
In the meantime, consider a slight change of your flow to first display the initial view, and have an animation to display your first-launch view. This way, the transition will be smoother and more natural to your users.
My app works good on iphone 4s, 5 , 5s simulators. On iphone 6,it shows up weirdly. It does not occupy the entire screen
What could be the issues?
if you are using the Auto resizing just under stand the concept for example
assume that u have a book self , u need to layout the book in the book self so u need to do the following steps
initially arrange the book self (this is your main View).
arrange the all books in inside the book self where u need the location (this is your subview, buttons, labels, all UI Elements).
u keep to follow the above two steps in always. got it
need reference follow the apple tutorial
this tutorial may also help u
The black view is an added view? If the goal is just to set the background color, better to just set the color of the root view.
If you're not using autoLayout (and I don't reccomend it, it's more trouble than it's worth in most cases) one simple to handle different screeen sizes is programatically.
Everything in the view in Interface Builder needs to be an outlet.
in -viewDidLoad, set the center of each view. For example, to center the mobile number text: [self.enterYourMobileNumberLabel setCenter: CGMakePoint(self.view.center.x, self.enterYourMobileNumberLabel.center.y)]
You could also set the frame for more percise handling, etc., using margin constants. Frames are often more code and more cumbersome, but AutoLayout is a nightmare.
Resolved the issue. Thanks for your valuable responses users.It has got nothing to do with Autolayout or autoresizing.
Just go to images.xcassets, right clicking in the navigator area, add launchImage. Then select your project (or target), go to general-->App Icons and Launch images and set Launch Images Source as Launch Image and most importantly, set Launch Screen file blank.
The app would now work well in iphone 6 simulator too.
The purpose of launch images is to fake that the app is starting to give time to the app to fully load but I have this app of mine that is so fast to load that the launch image just is visible for less than 0.1 seconds. I have tested the app without the launch image and it loads fast than with a launch image.
When I submit the app to Apple without the launch image it fails validation.
This is ridiculous. Is there a way to solve that?
thanks.
The general rule of thumb is to use a launch image that looks like the first screen of your app with text removed, so it looks like a blank slate of your interface. Once your app starts rendering, it will be obvious to the user that it's reached that point.
Many times games will have a splash screen, especially since they sometimes load resources during that time. So those will usually either have a launch image that is their splash screen, where once rendering it starts it makes some animation occur, or they will sometimes start with a black launch image because the logo/splash will fade in.
As you said, the app fails validation without the launch image. Also when Apple first came out with the iPhone 5, the way you added support for the iPhone 5 screen size was by adding a launch image at that size. So in that case Apple is actually using the presence of the launch image to determine if you support the screen size or not. In other words, you need launch images, and it does help with the user experience, even if it is only visible for a split second.
There is no way to solve it - you must have a launch image.
You could use a launch image that looks a lot like your first page, so it doesn't look so jarring when it briefly flashes up.
Last I checked when you don't have a launch image for a debug build iOS uses a default image. If I remember right it is black. So you could create an all black image and use that.
Ive personally never used a launch image and have gotten all of my apps approved. Maybe you're failing validation because of something else?
you do not need a launch image. This is not causing you to fail validation