当前位置: 首页 > 知识库问答 >
问题:

额外的20px顶部插图UIScrollView问题

嵇浩淼
2023-03-14

已经提出了与此相关的问题。我什么都试过了,但没能解决我的问题。我挣扎了2个小时,现在我在这里发布这个。

问题:UIScrollView的顶级contentInset总是有20像素的额外空间。

我有视图控制器XIB,而不是故事板。

首先,stackoverflow上的相关问题及其解决方案假设UIScrollView是UIViewController的根视图。但是我的滚动视图不是根视图,因此可能

self.automaticallyAdjustsScrollViewInsets=否;

它不起作用了

  • 我有一个HeaderView,其中包含leadingspace(0,superview)、trailing space(0,superview)、top space(0,superview)和固定高度。
  • 标题视图下方是滚动视图,带有前导空格(0,超级视图)、尾随空格(0,超级视图)、底部空格(0,超级视图)和垂直空格(0,标题视图)
  • 滚动视图中有一个内容视图。此视图在滚动视图中有前导(0)、尾随(0)、底部(0)和顶部(0)空间

我做错什么了吗?自动布局约束似乎很好。

共有3个答案

徐德海
2023-03-14

对于iOS11.1及以后:

斯威夫特5

if #available(iOS 11.1, *) {
    self.tableView.verticalScrollIndicatorInsets.top = CGFloat.leastNonzeroMagnitude
}

ObjC

if (@available(iOS 11.1, *)) {
    self.tableView.verticalScrollIndicatorInsets = UIEdgeInsetsMake(__DBL_MIN__, 0, 0, 0);
}

我没有使用0,而是使用CGFloat.leastNonZeroMagnite的原因是,在某些情况下,当值设置为0

宫晟
2023-03-14

在SWIFT 4中,保罗的回答是:

override func viewDidLoad() {
    backGroundScrollView.contentInsetAdjustmentBehavior = .never
    backGroundScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)

    super.viewDidLoad()
}
杜翰林
2023-03-14

您的控制器是否嵌入了导航控制器?似乎iOS在顶部留下20px的状态栏,但您的控制器没有状态栏。

无论哪种方式,在viewDidLoad中,如果在调用super之前调整scrollView,则它应该可以工作:

   - (void)viewDidLoad {
    self.automaticallyAdjustsScrollViewInsets = NO;
    self.scrollView.contentInset = UIEdgeInsetsMake(0,0,0,0); 
    [super viewDidLoad];
    }

iOS可能会自动强制您的scrollView具有20px的顶级contentInset的原因是,它可能是主视图中索引为0的视图。您可以在此处进一步阅读:http://b2cloud.com.au/how-to-guides/uiviewcontroller-changes-in-ios7

默认情况下,UIViewController将自动调整其UIScrollView(包括UITableView)在视图索引0(最后面)的内容插入。这意味着,如果在您的表视图后面有一个按钮、标签或任何其他视图,您将无法免费获得此行为。

 类似资料:
  • 在iOS 6中,分组表视图的底部似乎有额外的填充(iOS 5没有),但我找不到任何文档表明这是正确的/预期的行为。 这也会影响示例项目,例如TableViewSuite示例中的项目。我想我必须将App委托中的样式更改为分组,并将SDK更新为iOS6,但没有对项目进行其他更改。 调查显示,有保留给页眉和页脚视图,加上一些无法解释的。没有实际的页眉或页脚视图(和为,并且实现和返回例如不做任何事情)。我

  • 我正在使用recyclerview显示来自web服务的图像列表。我正在尝试在CardView小部件的ImageView中显示图像。一切正常。所有图像和列表都正确显示。但当我尝试在Kitkat 4.4.4上运行时,它会在Cardview中的图像顶部和底部显示额外的(大)填充。我只使用ImageView,没有文本,没有任何内容。 检查附加图像。 Cardview的XML代码

  • 我只是面临一个让我发疯的问题。我不明白为什么在我的tableView顶部和作为我的tableViewHeader的视图底部之间增加了一个额外的空间。标头的视图是pageViewController的视图,它在底部有自己的pageControl。 这很奇怪,因为iOS没有在这些项目之间添加空格。默认情况下,它们总是堆叠在一起,没有额外的填充。而且这个空间不是从头的视图中得到的,我在Xcode的视图调

  • 从iOS 9.3.2开始,顶部和底部都有额外的空间。 下面是一些例子: 大约有20个像素无法解释的填充。谁能解释一下它们是从哪里来的? 这对我不管用。

  • 我在SwiftUI中有一个InsertGroupedListStyle列表,并注意到iOS 15中添加了额外的顶部填充。如何控制或删除此项? 以下是iOS 14: iOS15:

  • 我拿起一些iOS编程,并试图把UITableView到一个故事板。不幸的是,我试图把内容放在视图的顶部,但它放了一些空间。我试图调整检视器中的值 我已经使背景绿色,并把边框颜色显示的问题。我不是一个老练的iOS开发人员,所以我认为这是最简单的解决方案,而不是复杂的东西。如何使表格视图的内容与顶部齐平?我已经看到了这个为什么在我的UITableView顶部有额外的填充样式UITableViewSty