I always tested my iOS app with (written in swift) with iPhone 6 simulator. Now I realized, that it does not automatically resize in other simulators like iPad (layout is small in the left edge) or iPhone 4s (layout is too big and cutted). I tried disabling Auto-Layout but even when I enable it again it doesn't work. What is the best way to make it resize ?
Designing for multiple screen sizes is a fundamental part of the development process and therefore you can't enable auto-layout and expect it to work the way you want.
You know that the iPhone 4S has much less screen space than the iPhone 6 Plus, so at a minimum you need to add Auto Layout constraints to your views so that they scale and position appropriately. Sometimes you might want to change or move entire UI elements for compact and regular screen sizes.
See the Apple Auto Layout guide for examples.
Related
I'm using Objective-C and Xcode-9.
When using autolayout, my designs appear perfectly on everything but iPhone 5.
I am trying to see if I can edit my design for -just- iPhone 5/SE screen sizes without affecting my other design integrations.
I tried using "Vary for Traits" but it appears that all iPhone sizes are considered regular height, compact width while in portrait mode so editing the iPhone 5 on those parameters edits all phone sizes.
I think I'm missing something here but I'm not sure the exact keywords to Google.
How do I customize a design in storyboards to be unique for iPhone 5 only, but remain the same for other phone sizes?
There isn't any simple built-in way to design in the storyboard for just one device type/size. But you should not have to. You should be able to make your design work for any phone size through autolayout alone.
Still, if you really can't, just implement viewDidLayoutSubviews (or layoutSubviews in your view controller's main view) and adjust the layout "by hand". That is when autolayout does its work, so if you don't like the results, you can tweak them at this point "manually".
I have a brand new Swift 2.0 XCode 7 Storyboard based application.
Target is set to 9.2. I'm currently supporting any device with GPS that can run ios 9.2
I started with the Tabbed View Template and I'm working in wAny and hAny and a single Storyboard.
It works fine in the simulator on a bunch of phones, both orientations and works fine on my 6s plus, 6s, 6 plus and a 5.
But for some users the scaling is wrong and everything comes out squished.
Even in landscape mode the TabBar Icons are very close to each other.
Narrower than even on my 6s plus in portrait.
I believe this is caused by my application not having a Launch bitmap.
My understanding is there are two ways to implement this.
Launcher .XIB/.NIB with half a dozen specific sized bitmaps attached. Or a StoryBoard Launcher with ... exactly what.
The "Or StoryBoard" is a little vague. But I wanted to keep things using the modern approach since this app is new and targeted users tend to have the latest device.
So I created my Launch Image set and tried to attached it to the UIImageView in the Launcher StoryBoard. It won't list items that are tagged as "Launcher Image Set". It will show other Image Sets and Icons. But not the ones specifically for Launcher. It shows an "L" in the xcassets list next to the Launcher Image set. I believe I have the build project setting set correctly and it looks perfect on many of the same exact devices.
After some digging, I read that if you use the "StoryBoard" method you don't need the 6 or so bitmaps anymore. You can put anything in the Storyboard Launcher View and treat it just like you would treat your main storyboard.
So I did that. I just centered a small image.png file in the View of the Launchers Storyboard. Works on all simulations and my iPhone 6s plus. I did not pin it to the edges because that would mess up the aspect ratio of the image.
A very small set of users still have the issue and one of them even uninstalled and reinstalled.
I tried playing with setting phone Zoomed, Normal, Text Size, Bold etc. They all work. Users also don't have anything out of the ordinary on these system settings.
So first, do I need the 6 proper sized bitmaps or not? I read conflicting info on this.
If I want to use the 6 images on a storyboard how to I get them in the UIImageView of the Launcher StoryBoard if they won't list? Should I put them in a regular image set. Does the "Launcher Image Set" only work for the for the Launcher.XIB?
If it's not the Launcher window, what else could it be causing this?
I know I could create a XIB/NIB with the 6 bitmaps. But that seems like I'm going backwards and I don't care about old OS versions or older phones.
I think I found my answer. When using a Storyboard Launcher you cannot use a "Launch Image Set" for your Launcher Storyboard. You have to use an Image Set.
This is the best Video I found that covers it A-Z.
https://www.youtube.com/watch?v=Vz6tCgXgZFo
It also didn't fix my initial problem. Which I'll post separately. It scales correct in Portrait but not in Landscape for hand full of users. Using the same hardware as others that it works fine on.
I have tried new app in Xcode 6 and not use storyboard. But when I have ran the app, with Iphone 5,5s,6 and 6 plus, in Iphone Simulator visualize two black bars on the top and below. Only Iphone 4s there aren't black bars.
Do you have an idea to resolve my problem?
Thanks
You need to add a Default-568h#2x.png image file that is 640x1136 to your project. I added an all black one that was in an older project. I didn't have to set anything else, which was nice. If you are building for iOS8 and later you can just use the LaunchScreen.xib instead.
In my case I was using jpg pictures for the default. Even though I had the correct file names and resolutions, it didn't work.
Switching from jpg to png solved it.
If you designed the app so that its views had the "old" screen size, and didn't design them to be responsive to different screen sizes, then the phone will add the black bars (known as a "letterbox", I think).
I was making a user interface using storyboards and when I built my app to see how it would look in the iOS simulator it didn't look like the viewcontroller in the storyboard (some of the buttons were moved around and I had to move one button way down so it was in the place i wanted it to be). Does anyone know why this is?
Yes, the reason is auto layout, it will automatically position elements on a relative basis depending on the device you're running.
You can turn autolayout off, or build for all devices at once and keep it on.
You may want to read iOS Auto Layout Demystified by Erica Sadun which goes in depth to the world of autolayout.
We just set up a whole bunch of development MacBooks in our office. We all set up the computers exactly the same as far as I can tell (just installing xcode and not changing any settings). We even distributed the exact same xcode project to everyone to test whether or not everyone was set up correctly. For some reason though, my iPad simulator incorrectly renders the positions of Objects on the UIView controller.
I can make a really basic application and slap down a UIView controller with the storyboard editor in xcode 4.3.1 (newest version ATM), and add a button to it. When I run this on the simulator, it will look fine on the iPhone one, but when I try to view it in the iPad, it seems that some elements will scale to the iPad resolution fine, but others will not. The components that do not, seem to be in the place that they would be if they had been rendered on the iPhone.
The weirdest part of this problem is that I can't find anyone online who has had this same issue. I have already tried deleting and re-installing xcode and the same thing still happens. I fear I might have to re-install the OS and start from scratch.
How it looks on the iPhone simulator:
And on the iPad simulator:
I don't think that's an SDK issue, I bet that you are writing code that fits for the iPhone screen and not for the larger iPad screen.
I think that you added just the button and is Autoresizing Mask is not set properly.
I've done some measurement an it seems that:
The distance from the top of the view is in fixed (~360px);
The width is fixed (~260px);
You need to give the button a fixed distance from the bottom (as it should stay on under the plot) and remove the left fixed margin so it can be centered.
You need to take a look at the UIViewAutoresizingMask for the UIView's autoresizingMask property.
button.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;