So I have a UIScroll view with constraints which position it to the outer borders of the root view - Check
Inside of the UIScrollview I have a VIEW which serves as container for the scrollview.
The issues I'm having is that this view is that even though the bottom constraint is set to equal to the bottom of the scrollview it collapses to a height of 0 in the interface. This hides all of the views inside of the container view making is almost impossible to build the interface...very annoying..what am I missing here?
here is my constraint chart...this is really got me pulling out my hair.
See how the "view" height is 0 and also the Important Message goes to 0 height as well.
I attach a screenshot of my project's document outline which shows whole list of autolayout configurations.I think it will help you to figure out your problem.
enter image description here
Related
I am attempting to set up a scroll view and every video I watch they say the same things:
•Make scrollview in VC
•Make it bound to all margins (0,0,0,0)
•Embed a content view inside of Scrollview
•Content view margins are (0,0,0,0)
•Set Equal heights & width from content view to superview
•set priority of height to 250
I have done this time and time again and cannot figure out why it still isn't working. Can someone please double check these screenshots?
Try adding some subviews into your content view and make sure to have a complete set of vertical constraints from top to bottom.
If you go in the Size inspector under the "Scroll View" Section you can find the "Content Layout Guides" tick, disable and the errors will disappear
If you Set All the constraints to ScrollView and want to set its contents in code .. it remains complaining about its constraints because they remain ambiguous .. so to remove error from story board
what you do is set Ambiguity to never verify and error will go away .... hope it will help
Looks like you do not have anything bound to your Content Layout Guide.
So basically you have two guides in Scroll View: Frame and Content.
Frame Layout Guide provides you the ability to bind to your UIScrollView's frame. E.g. equal width between your Content view and Scroll View itself.
The most useful here is Content Layout Guide. Basically it helps to determine the scrollable content size of your UIScrollView's contents.
So in your case you have to have a Content view inside your Scroll View that has equal width with Frame Layout Guide and have its edges pinned to Content Layout Guide. Like so:
Oh, and do not forget to have your Content view have a determined height so your scroll view will calculate the size of its scrollable contents.
Please take a look at an image below
There is a scroll view. But I don't want an imageView(topBar) move. How can I keep an image view out of scrollview scope? (I mean fixed topBar, no move) With a constraint? And managing the constraint from code behind during the scroll?
Move the top bar image so that it isn't in the scrollview. It's parent should be the View0 Outlet, then you can constrain it however you want without it moving in then scrollview.
Using a stackView with vertical setting and free form. In this case, you can lock the height of topBar.
I am pretty sure this has something to do with the dreaded AutoLayout. (been trying since 2days to get hang of it)
So I mastered it somewhat, but now I have problem where my UIScrollView is not scrolling fully down, pictures are much better at explaining these things
this is the scroll view
this is the content view
so the problem is the scrolling is happening but then again it springs back up. So I am not able to click on the signup button
EDIt 1
Edit:
I have created a little example on github for you to look at, here. The project illustrates the answer below and uses the techniques I describe and nothing else.
Original Answer:
couple of things I would advise here.
First, I know you've been trying for a while but remove all the current constraints (painful I know but). Do this for clarity as ....
The view should be the size of the scene, it looks like you want the scrollview to be the full screen so that too needs to be the size of the scene.
e.g. if you are designing at 6Plus by default the scene size is 414x736 so the view and the scrollview it contains should also be 414x736.
Only the content view needs to be the size of the real content you wish to show. Let's say for arguments sake that the content is 414x1000.
Now the constraints for the scrollview are simple. It needs zero spacing to all it's edges.
You can add the content view to the scrollview in a couple of ways. The way I try to do this varies from project to project and depends mostly on how complex the scene is. If it's a really busy scene I keep the content view outside of the scrollview in interface builder so that I can work on it easily and visualize the whole of the view. Then I add the content view to the scrollview in code.
If its a simpler view You can add it inside the scrollview in interface builder. Ultimately whichever way you do it, you can lose visibility of the content view in interface builder because the contentview is larger than the scrollview and the content gets obscured. So play about and find a good way for you.
Define the content view and all it's subviews. The content view needs to be taller than the scrollview otherwise it wont scroll. All of the content view's subviews need to have defined heights from top to bottom and widths from left to right. In your case the scrollview is scrolling vertically not horizontally so all the widths need to add up to the width of the scroll view BUT the heights need to add up to the full height of the content view.
Note: if you do this proportially your life will be easier later. If you do all this with fixed heights the storyboard will break on different device sizes.
Now the "tricky bit" and it's a bit counter intuitive. You need to pin the content view to the scrollview, remember the height of the content view is taller than the scrollview. In all other circumstances in Interface Builder pinning a view to a superview (0 padding) will adjust the height (or width) accordingly. For the relationship between a scrollview and it's content view this doesn't happen.
First pin the contentview
Notice the -400? Remember the content view is taller than the scrollview and we will change this immediately.
Select the bottom constraint (-400) that we have just created:
Select the drop down arrow next to the constant value:
Select Standard Value and type in 0 for the constant.
You should now have a storyboard with no broken constraints and if you build and run you should get a scrollview as desired.
Your bottomspace to superview on your content view is set to -74.0, I don't know if there is a reason you had to do that, but try setting it to -8.0. I think your scroll view is scrolling up to the 0.0 mark automatically
I have to design a screen for all the devices, so I have decide to use Size Classes + Auto Layouts in Xcode 7.2, but it has been 2 days to make it work, but all in vain.
I have googled and learnt a number of tutorials but even then not able to figure out what is wrong with my scroll view.
Here is what I am doing:
Dragged a UIScrollView into my UIViewController Class.
Resized scrollview to frame (0,0,600,600) viewcontroller's size.
Selected ScrollView and press on pin icon to add following constraints:
Unchecked constraints to margins checkbox.
Leading - 0, Trailing - 0, Top - 0, Bottom - 0.
Dragged a new UIView into scrollview and added following constraints:
Unchecked constraints to margins checkbox.
Leading - 0, Trailing - 0, Top - 0, Bottom - 0.
Now Dragged from my content view to main view(View controller's View) and selected "Center Horizontally in View" and "Center Vertically in view".
Now added some UI objects to my content view like UIImageView, UILabel, UItextFields and UIButtons and put constraints on them as well. My top most object is attached to content view's top and bottom object is not attached with content view's bottom as if I will do that it will shrink my objects to fit in the screen.
If I run this code everything is looking fine, except that on iPhone 4S I am unable to scroll.
I have tried a lot of things, but nothing worked for me. Could anyone help me on the same.
You have to give the height and a low priority.
Control drag the content view on to the view of the view controller as select the 'Equal Heights' option.
See around 35 secs at this video https://youtu.be/UnQsFlMGDsI?t=35s
I created a custom "component" made up of UIView and it gets added as subview on any visible view. What I found strange is that when it get added to a view the second time, the width got increased by 1 pix. This caused a problem when it expanded the background image and causes the image to blur out.
Any ideas why a view will get expanded (or shrink) when added to another view?
The issue may be related to the location of the view.
Perhaps one of these stories will shed more light on the issue:
Fixing Blurry Subviews
Why does a PNG image sometimes get blurry depending on its position in a view