Why is UIScrollView leaving space on top and does not scroll to the bottom

耗尽温柔 提交于 2019-12-28 02:49:10

问题


I am new to objective-C programming.

I am using UIScrollView with some labels, image and text view on it.

I have turned off Autolayout and already tried with "Adjust scroll View Insets" on (situation described in title) and off (doesn't scroll).

This is what I insert into viewDidLoad:

    [scroller setScrollEnabled:YES];
[scroller setContentSize:CGSizeMake(320, 687)];

But I must be missing something very simple.


回答1:


1... Why is UIScrollView leaving space on top

With Storyboard- Goto view controller > Attribute Inspector > Uncheck Adjust Scroll View Insets property

With Code- For extra space set viewController property automaticallyAdjustsScrollViewInsets to NO, by default it is YES.

self.automaticallyAdjustsScrollViewInsets = false; 
scroller.contentInset = UIEdgeInsetsZero;
scroller.scrollIndicatorInsets = UIEdgeInsetsZero;
scroller.contentOffset = CGPointMake(0.0, 0.0);

2... does not scroll to the bottom

To make it scroll try with large number in contentSize like CGSizeMake(320, 1687). If it works that means you are not setting the contentSize large enough to have all its content.




回答2:


Just select your view controller and set shown option to false (uncheck)




回答3:


iOS 11

In my case only changing this UIScrollView Content Insets property in IB from Automatic to Never helped.




回答4:


iOS 11

if #available(iOS 11.0, *) {
    scrollView.contentInsetAdjustmentBehavior = .never
} else {
    automaticallyAdjustsScrollViewInsets = false
}



回答5:


Swift 3.0

self.automaticallyAdjustsScrollViewInsets = false

scrollView.contentInset = UIEdgeInsets.zero

scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;     



回答6:


Actually, the margin has nothing to do with ScrollViewInsets or contentOffset. It's just a conflict between SuperView.Top and SafeArea.Top pinning, happens when you pin the UIScrollView to top, bottom, left and right.

This is the right way to cover the top margin.

1) Pin all the four sides.

2) Select the top constraint > Change Second Item to Superview.Top

3) Then the last step is to change the Constant to 0 (Zero).

You might want to check this too: https://github.com/29satnam/MoveTextFieldWhenKeyboardAppearsSwift




回答7:


On iPhoneX this will also occur due to some non-sense safe area stuff that auto-layout tried to account for. Fix (for iPhoneX) with this:

if (@available(iOS 11.0, *)) {
    scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}



回答8:


In your view .m file, use this code to fix this problem

-(void)layoutSubviews{
    // To fix iOS8 bug of scrollView autolayout
    if([[[[[UIDevice currentDevice]systemVersion] componentsSeparatedByString:@"."]objectAtIndex:0] integerValue] == 8){
        [self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }
}



回答9:


Swift 3.0

self.automaticallyAdjustsScrollViewInsets = false

scrollView.contentInset = UIEdgeInsets.zero

scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;    

scrollView.contentOffset = CGPoint(x: 0.0, y: 0.0);



回答10:


Swift 3 (Auto Layout)

  1. Change "Layout Margins" to explicit
  2. Set margins to your needs




回答11:


This works for me,

_scrollView.scrollIndicatorInsets = UIEdgeInsetsZero;
_scrollView.contentOffset = CGPointMake(0.0, 0.0);
[_scrollView setContentSize:CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)];



回答12:


After user interface orientation going to landscape, my UIScrollView shown its UIScrollIndicator being misplaced. To fix this, you need to add the following code.

As per iOS 13, yet supporting iOS 12 and earlier:

    // Fixes the scroll indicator misplacement when rotated in landscape
    if #available(iOS 13.0, *) {
        v.automaticallyAdjustsScrollIndicatorInsets = false
    } else {
        // Fallback on earlier versions
        v.contentInsetAdjustmentBehavior = .never
    }

    v.contentInset = .zero
    v.scrollIndicatorInsets = .zero


来源:https://stackoverflow.com/questions/24691614/why-is-uiscrollview-leaving-space-on-top-and-does-not-scroll-to-the-bottom

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!