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

运行时滚动视图中的额外空间(插图)

晁聪
2023-03-14

设置:

我正在Xcode 5中处理一个显示一组文本字段的视图。为了在键盘出现时处理滚动,我使用滚动视图来放置我的文本字段。我正在使用自动布局。

问题:

我正在努力解决在运行时向滚动视图顶部添加额外空间的问题。就像一个插页被应用到我的滚动视图中,尽管我已经通过日志确认插页为零。

在我的viewDidLoad()方法实现中,我这样做是为了确认值。。。

UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
self.scrollView.contentSize = self.scrollView.bounds.size;
self.scrollView.contentOffset = CGPointMake(0.0, 0.0);

NSLog(@"Content Size: %f x %f", self.scrollView.contentSize.height, self.scrollView.contentSize.width);
NSLog(@"Bounds Size: %f x %f", self.scrollView.bounds.size.height, self.scrollView.bounds.size.width);
NSLog(@"Frame Size: %f x %f", self.scrollView.frame.size.height, self.scrollView.frame.size.width);
NSLog(@"Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
NSLog(@"Scroll Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);

输出:

2013-10-08 11:38:42.953 test[6440:a0b] Content Size: 455.000000 x 320.000000
2013-10-08 11:38:42.954 test[6440:a0b] Bounds Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Frame Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Inset Size top: 0.000000 bottom: 0.000000
2013-10-08 11:38:42.956 test[6440:a0b] Scroll Inset Size top: 0.000000 bottom: 0.000000

在我的第一个文本字段上方添加的空格(inset)似乎大约等于标准导航标题,但这可能是巧合。

我的滚动视图的高度设置为455,y值为64,以适应导航状态栏和底部的标签栏。

我没有任何潜在问题的布局通知。滚动视图顶部和底部空间约束被定位为0点(我从状态栏和标签栏推测。

当运行应用程序并在滚动视图中看到额外的空间时,滚动条仅覆盖预期的空间(它们不包括作为可滚动区一部分的额外空间)。

最后要注意的一件事。当我执行键盘通知逻辑时。(取自苹果这里...问题自行解决,没有更多的空间。这让它看起来像是在情节提要中配置的内容的初始化问题?

谢谢!

共有3个答案

牟波
2023-03-14

在viewDidLoad方法中调用以下代码行:

self.automaticallyAdjustsScrollViewInsets = false
哈襦宗
2023-03-14

除了按照Greg的指示在IB的视图控制器上禁用“调整滚动视图插图”之外,我发现解决此问题的另一种方法是编辑我在滚动视图和顶部布局指南之间的“顶部对齐”约束。将后者从“顶部布局指南.Bottom”更改为“顶部布局 Guide.Top”使在运行时看起来没问题,尽管人们仍然可以在情节提要中看到额外的空间(Xcode 6.4)。

沈飞翼
2023-03-14

iOS7中的UIViewController有一个名为自动调整ScrollViewInset的设置。如果这是YES,滚动视图的插页将根据状态栏、导航栏和工具栏或标签栏的高度自动调整。

此设置也可以在Interface Builder中设置;在属性检查器上称为“调整滚动视图插页”。

 类似资料:
  • 我在listview上体验过平滑滚动的奇怪行为。我的清单上有30个项目。当我平滑滚动通过 在屏幕的末尾会有一些额外的空间。实际上listview上移了一点。图片附后。但是如果我手动滚动,就没有空间了。如何解决这种行为? 这是我的布局:

  • 我将视图背景颜色设置为绿色,这样您可以清楚地看到底部的额外空间。 无论我将高度设置为大于,也不设置扩展边缘取消选择"下顶栏",额外的空间总是存在的。 你能给我一些建议吗?我使用了Xcode 5和IOS SDK 7.0。 谢谢。

  • 我有一个水平ScrollView,它有两个元素:CardView和水平RecycerView。所以,当用户水平滚动时,我希望这两个元素滚动。 我想有这样的东西:Goal,橙色的线是CardView,黄色的线是RecycerView。当用户滚动时,两个元素滚动,如下所示:Scrolled Goal。 现在在我的应用程序中,当用户滚动时,只有RecycerView滚动。CardView保持在他的位置。

  • 我有一个android布局,它有一个,里面有很多元素。在的底部有一个,然后由适配器填充。 我遇到的问题是,android将从中排除,因为已经具有可滚动的功能。我希望与内容一样长,并且主滚动视图是可滚动的。 我怎样才能达到这种行为呢? 下面是我的主要布局: 然后以编程方式将组件添加到具有ID:的linearlayour中。下面是加载到LinearLayout中的一个视图。就是这个给我卷轴带来麻烦的。

  • 我已经以编程方式创建了,但它下面有一些额外的空间(准确地说是29像素)。 以下是初始化表的方式: 以下是限制条件: 我尝试将页脚视图设置为零,并将其高度返回零: 我动态改变它的高度,根据内容: 我还将设置为。这就是最终的结果。单元格和空白之间有分隔符,但底部不是单元格。

  • 我的tableview在底部有一个额外的空间,如图所示: tableView中的所有行都具有71pt的固定高度。