我有一个UIScrollView (由视图控制器管理),我同时使用全屏和子视图。全屏版本可以正常工作,而子视图则不行。
子视图的位置使得它占据屏幕的下半部分,底部有一个小的- 20像素左右的边距。
最初,它显示在正确的位置,但会覆盖底部的页边距-即使滚动视图的框架设置为离开页边距。
当我通过拖动视图向上滚动视图时,整个视图向上移动并遮挡了窗口的顶部。当框架命中顶部的导航栏时,它将停止移动,并开始像普通滚动视图一样滚动。如果我滚动它足够多,它最终会显示屏幕底部的页边距。
我不知道该怎么做--我已经尝试了我能想到的每一个弹簧组合。我现在正在研究子视图裁剪。
图片如下。第一张图显示了初始页面加载时的滚动视图,正确地定位在较低的边距覆盖之外。滚动视图的背景为白色。

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

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

发布于 2011-06-06 21:24:51
在这一点上我不是百分之百确定,但值得一试:我猜你可能没有在你的表上正确地设置边界属性。
要解决这个问题,最简单的方法是设置myscrollview.clipsToBounds = true。
发布于 2011-06-06 22:06:20
这里肯定出了什么问题。我认为所发生的情况是,您正在添加相同的scrollview实例作为其自身的子视图。因此,基本上只剩下一个实例。你添加到"subview“的任何东西,基本上都是添加到superview上的,因为它是相同的对象。
例如,这就是我认为你在视图控制器中做的事情:
//...
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。
至少我是这么理解的。
https://stackoverflow.com/questions/6250766
复制相似问题