首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为子视图的ScrollView不考虑框架边界

作为子视图的ScrollView不考虑框架边界
EN

Stack Overflow用户
提问于 2011-06-06 18:34:14
回答 2查看 999关注 0票数 1

我有一个UIScrollView (由视图控制器管理),我同时使用全屏和子视图。全屏版本可以正常工作,而子视图则不行。

子视图的位置使得它占据屏幕的下半部分,底部有一个小的- 20像素左右的边距。

最初,它显示在正确的位置,但会覆盖底部的页边距-即使滚动视图的框架设置为离开页边距。

当我通过拖动视图向上滚动视图时,整个视图向上移动并遮挡了窗口的顶部。当框架命中顶部的导航栏时,它将停止移动,并开始像普通滚动视图一样滚动。如果我滚动它足够多,它最终会显示屏幕底部的页边距。

我不知道该怎么做--我已经尝试了我能想到的每一个弹簧组合。我现在正在研究子视图裁剪。

图片如下。第一张图显示了初始页面加载时的滚动视图,正确地定位在较低的边距覆盖之外。滚动视图的背景为白色。

第二张图片显示它向上滚动到顶部:

第三张图片显示它一直滚动到顶部-请注意,下边距已变为可见。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-06 21:24:51

在这一点上我不是百分之百确定,但值得一试:我猜你可能没有在你的表上正确地设置边界属性。

要解决这个问题,最简单的方法是设置myscrollview.clipsToBounds = true

票数 3
EN

Stack Overflow用户

发布于 2011-06-06 22:06:20

这里肯定出了什么问题。我认为所发生的情况是,您正在添加相同的scrollview实例作为其自身的子视图。因此,基本上只剩下一个实例。你添加到"subview“的任何东西,基本上都是添加到superview上的,因为它是相同的对象。

例如,这就是我认为你在视图控制器中做的事情:

代码语言:javascript
复制
//...
private UIScrollView myScrollView;
public override void ViewDidLoad()
{
    this.myScrollView = new UIScrollView();
    this.View = this.myScrollView;
    this.View.AddSubview(this.mySrcollView); // same instance
    this.myScrollView.AddSubview(aUIButton); // "aUIButton" will be added in View also, since it is the same object
}

如果是这样的话,那就错了。我建议不要改变控制器的视图。如果你想要一个具有全屏UIScrollView的控制器,只需创建它并将其添加为一个子视图,并确保AutoSizesSubviews属性为true。

至少我是这么理解的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6250766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档