Designing inside a scrollview in xcode 4.2 with storyboards

前端 未结 9 809
梦如初夏
梦如初夏 2020-11-29 02:46

I have a vertically scrolling uiscrollview - imagine an \'about this app\' page of a tab bar app which goes on a bit and requires a scrollview. It only contains a few images

相关标签:
9条回答
  • 2020-11-29 03:18

    Just uncheck the "Autoresize subviews" from any view that you're trying to resize and it should keep all your objects from resizing with it.

    0 讨论(0)
  • 2020-11-29 03:20

    I feel your pain. The only way I found is to manually pan the scroll view in the size inspector to reveal the portion of the view that you wish to visually edit.

    Use a UIView to contain elements so they are positioned relatively to this view. Add the view as a subview to the scrollview at 0,0.

    1. pan: use the Y coordinate say to -200, then edit the contents.
    2. to place more contents in the hidden part, pan again to reveal new real-estate
    3. when finished, restore the values of the ScrollView's height and X,Y position.

    Make sure the scroll view frame rectangle is smaller than the contained view.

    0 讨论(0)
  • 2020-11-29 03:21

    I've been struggling with this for a while now, and every single thing I've tried has failed.

    Specifically, What I am trying to achieve is a freeform sized modal dialog with a scrollable view containing a container for another view. I have had a lot of varied results, including occasionally having it working correctly. Most often I get it looking exactly correct, but with no scrolling.

    In finally downloaded Dickey Singh's code, which worked perfectly but had nothing special. (Excellent clean solution BTW). So, I added a container view to it, exactly as I had in my code, and it broke!

    After some experimenting, I worked out what is going on. Just bear with me.

    1) Using Auto Layout, the size of the scroll view seems to dictate what the scrolling bounds will be. Setting "contentSize" in "USer Defined Runtime Attributes" seems to have no effect on this, and neither does setting "contentSize" or "bounds" in "viewWillDisplay" or "viewDidLoad". Thus if the initial size of the scroll view is 800x800, that will be all the space that can be displayed. For this reason, when I want a scrollable region, I create a container view and then put the scrolling view inside the content.

    2) Without Auto Layout, setting "contentSize" in "User Defined Runtime Attributes" works, as does by setting it programmatically in "viewDidLoad". I prefer to use "User Defined Runtime Attributes" because it keeps the size with the layout. This solution allows you to use scrolling view with more flexibility, since it can be any size at design time.

    3) Regardless of Auto Layout, if any view within the scrolling region exactly matches EITHER the horizontal or vertical frame bounds, then the scroll view ceases to function as a scroll view. This applies to my own code and to Dickey Singh's code in every possible configuration that I have tried.

    I have no idea what is causing (3), but it is clearly a bug.

    I hope this helps everybody out there who is struggling to use scroll view. I imagine that some people are using them without any problem, and some (like me) have had noting but problems with them.

    0 讨论(0)
  • 2020-11-29 03:27

    Just change the 'Simulated Size' of the view controller to freeform and set a height that is larger than the usual size, you will be able to see all the outlets you need to edit.

    0 讨论(0)
  • 2020-11-29 03:30

    In the storyboard select the viewController, then in Attributes inspector change 'size' to 'freeform'. Then change the 'height' of the view/scroll view to as big as you need. The default settings of struts and springs should take care of resizing the view back correctly when the app is run, but you should double check.

    0 讨论(0)
  • 2020-11-29 03:34

    New: 3/26/2013

    I stumbled upon what I think is even simpler way of dealing with UIScrollView directly in storyboard.

    1. No code needed, just storyboard settings. This maybe new in iOS6.1 / Xcode 4.6
    2. No need to disable constraints (i.e. uncheck "Use autolayout" in File Inspector for storyboard file)
    3. No need to add UIScrollView* scrollView; in .h
    4. No need to add self.scrollView.contentSize = ... in overrides of viewWillAppear or viewDidLoad

    Here is what I did (important parts highlighted with **): (see code)

    1. Create a new project with storyboard enabled
    2. Drop in a UIScrollView, set class in identity inspector for view controller
    3. In attributes Inspector, change Size under simulated metrics to Freeform**
    4. Select scroll View; In attributes inspector, turn on "scroll enabled" and "background" to "White" (you'll figure out why - if you don't)
    5. Under Size Inspector (with scroll view selected) change the height to 900 for example**
    6. Add buttons, one on top and one at the bottom
    7. Add a default handler for buttonTouchUpInside for both buttons and simply Log sender.

    See Code Select the View Controller and scroll view and check inspectors.

    0 讨论(0)
提交回复
热议问题