Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add a ScrollView to existing View

I'm developing a little app in Swift 2.0. I have a View with the following hierarchy:

enter image description here

Now, the elements placed in this view can't be displayed entirely in it, so I would like to use a ScrollView in order to be able to scroll all the content.

How I can embed all the content of my Viewto a new ScrollView? Can I do this programmatically by code?

like image 436
giograno Avatar asked Mar 16 '16 06:03

giograno


People also ask

How do I make my view controller scrollable?

One way to do this is programmatically create an UIScrollView in your UIViewController . To control the scrollability you can set the ScrollView contentSize property.

What is ScrollView content offset?

contentOffset is the point at which the origin of the content view is offset from the origin of the scroll view. In other words, it is where the user has currently scrolled within the scroll view. This obviously changes as the user scrolls.


2 Answers

UPDATE: There's an easier way to do this which I didn't know when I posted this answer

1) Go to the viewcontroller on the storyboard and click on something in it and press Command + A. This will select all the elements in the view.

2) Go to Editor -> Embed In -> Scroll View. This will embed all the labels, views, etc into a scrollView.

3) Select the scrollview that you just embedded. Press Control and drag it to the respective class file of the viewcontroller and create an outlet scrollView.

4) Add this to your viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100) 

Make sure the height for the contentSize is more than the size of your view.

ADDING SCROLLVIEW MANUALLY

1) Drag and drop a scrollview from the Object Library onto your viewcontroller in the storyboard and create an outlet to your program as 'scrollView'.

2) Click on your viewcontroller and go to the size inspector and note down the width and height.

3) Click on your scrollview and set the width and height the same as the viewcontroller. and set the X and Y values to 0

4) Click on the scrollView and drag it a little bit to the side

5) Press Command+A to select all the elements including scrollView. Press Command and click on the scrollView to deselect the ScrollView

6)You will have all the elements except the scrollView selected now. Now click and drag them into the scrollView.

Moving into scrollView

7) Now click on the scrollView and set the X and Y values to 0 from the Size Inspector.

8) Add this to your viewDidLoad()

scrollView.contentSize = CGSizeMake(self.view.frame.width, self.view.frame.height+100) 

Make sure the height for the contentSize is more than the size of your view.

That should create a scrollView for your view. Some of the elements might be in a slightly different position. You can easily fix them by moving them on your storyBoard.

like image 66
ebby94 Avatar answered Oct 05 '22 22:10

ebby94


It can be done even simpeler than ebby94's answer.

1) Go to the viewcontroller on the storyboard and click on something in it and press Command + A. This will select all the elements in the view.

2) Go to Editor -> Embed In -> Scroll View. This will embed all the labels, views, etc into a scrollView.

3) Set the constraints of the Scroll View to the View's edges.

And you're good to go! No need for an outlet.

like image 23
FredFlinstone Avatar answered Oct 05 '22 23:10

FredFlinstone