我是Objective-C编程的新手。
我正在使用UIScrollView,上面有一些标签,图片和文字视图。
我已经关闭了Autolayout并且已经尝试了“调整滚动视图插图”(标题中描述的情况)和关闭(不滚动)。
这是我插入viewDidLoad:
[scroller setScrollEnabled:YES];
[scroller setContentSize:CGSizeMake(320, 687)];
但我必须错过一些非常简单的事情。
答案 0 :(得分:41)
1 ...为什么UIScrollView在顶部留空?
使用Storyboard - 转到视图控制器>属性检查器>取消选中“调整滚动视图插入属性”
使用代码 - 对于额外空间集viewController
属性automaticallyAdjustsScrollViewInsets
到NO
,默认情况下为YES
。
self.automaticallyAdjustsScrollViewInsets = false;
scroller.contentInset = UIEdgeInsetsZero;
scroller.scrollIndicatorInsets = UIEdgeInsetsZero;
scroller.contentOffset = CGPointMake(0.0, 0.0);
2 ...不会滚动到底部
要使其滚动,请尝试contentSize
中的大号CGSizeMake(320, 1687)
。如果它有效则意味着您没有将contentSize
设置得足够大以包含其所有内容。
答案 1 :(得分:31)
只需选择您的视图控制器并将显示的选项设置为false(取消选中)
答案 2 :(得分:16)
iOS 11
if #available(iOS 11.0, *) {
scrollView.contentInsetAdjustmentBehavior = .never
} else {
automaticallyAdjustsScrollViewInsets = false
}
答案 3 :(得分:12)
iOS 11
在我的情况下,仅将IB中的此UIScrollView内容插入属性从Automatic
更改为Never
有帮助。
答案 4 :(得分:6)
Swift 3.0
self.automaticallyAdjustsScrollViewInsets = false
scrollView.contentInset = UIEdgeInsets.zero
scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;
答案 5 :(得分:2)
我在下面做了,我的问题解决了
将Automatic
中的UIScrollView Content Insets属性更改为Never
,并在viewDidLoad()
中添加以下代码
scroller.contentInset = UIEdgeInsetsZero;
scroller.scrollIndicatorInsets = UIEdgeInsetsZero;
scroller.contentOffset = CGPointMake(0.0, 0.0);`
答案 6 :(得分:1)
实际上,保证金与ScrollViewInsets
或contentOffset
无关。它只是SuperView.Top
和SafeArea.Top
固定之间的冲突,当您将UIScrollView固定到顶部,底部,左侧和右侧时发生。
这是覆盖上边距的正确方法。
1)将四边都钉住。
2)选择顶部约束>将第二项更改为Superview.Top
您可能也想检查一下: https://github.com/29satnam/MoveTextFieldWhenKeyboardAppearsSwift
答案 7 :(得分:1)
在iPhoneX上也会发生这种情况,原因是自动布局试图解决的一些无意义的安全区域内容。 (针对iPhoneX)修复此问题:
if (@available(iOS 11.0, *)) {
scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
答案 8 :(得分:0)
在您的视图.m文件中,使用此代码来解决此问题
-(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 :(得分:0)
Swift 3.0
self.automaticallyAdjustsScrollViewInsets = false
scrollView.contentInset = UIEdgeInsets.zero
scrollView.scrollIndicatorInsets = UIEdgeInsets.zero;
scrollView.contentOffset = CGPoint(x: 0.0, y: 0.0);
答案 10 :(得分:0)
答案 11 :(得分:0)
这对我有用
_scrollView.scrollIndicatorInsets = UIEdgeInsetsZero;
_scrollView.contentOffset = CGPointMake(0.0, 0.0);
[_scrollView setContentSize:CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)];
答案 12 :(得分:0)
在面向用户界面时,我的UIScrollView显示了其UIScrollIndicator放错了位置。要解决此问题,您需要添加以下代码。
根据iOS 13,但支持iOS 12和更低版本:
// 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