2011-06-06 44 views
1

我有一个UIScrollView(由视图控制器管理),我正在使用全屏幕和子视图。全屏版本工作正常 - 子视图不能。ScrollView作为子视图不尊重框架的边界

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

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

当我拖动视图向上滚动时,整个视图向上移动并遮住窗口的顶部。当框架碰到顶部的导航栏并开始像正常滚动视图一样滚动时,框架停止移动。如果我滚动它足够它最终显示屏幕底部的边距。

我不知道该怎么做 - 我试过每个春天的组合我都能想到。我现在正在查看子视图裁剪。

下面的图片。第一个显示初始页面加载时的滚动视图,除了下边距覆盖外正确定位。滚动视图具有白色背景。

Initial load

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

Scrolled up toward the top

第三图像显示它滚动一路攀升到顶部 - 注意,较低的利润率已经成为可见。

enter image description here

+0

你可以发布这个截图吗? – 2011-06-06 13:03:31

+0

我发布了截图,谢谢你的关注。 – vlad259 2011-06-06 13:35:09

回答

3

我不是100%确定这一个,但值得出手:我的猜测是,你可能不会在你的桌子正确设置bounds属性。

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

+0

你是男人!真的非常感谢你! – vlad259 2011-06-06 13:40:21

+0

很高兴它的工作! :) – 2011-06-06 14:18:50

0

这里肯定有些问题。我认为会发生的是,您将为其自身的子视图添加相同的scrollview实例。所以,基本上你留下的只是一个例子。任何你添加到“子视图”中的东西,基本上都会添加到超级视图中,因为它是同一个对象。

例如,这是我认为你正在做的视图控制器:

//... 
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

好的,我错了......! – 2011-06-06 14:08:28

+0

值得一试虽然 - 谢谢你的时间! – vlad259 2011-06-07 08:06:28