我有一个UIScrollView(由视图控制器管理),我使用全屏和子视图。全屏版本工作正常 - 子视图没有。
子视图的位置使得它占据屏幕的下半部分,底部有一个小的20像素左右的边距。
最初它显示在正确的位置但覆盖了底部边距 - 即使scrollview的框架设置为离开边距。
当我通过拖动视图向上滚动视图时,整个视图向上移动并遮挡窗口的顶部。框架在点击顶部的导航栏时停止移动,并开始像普通的滚动视图一样滚动。如果我滚动得足够,它最终会显示屏幕底部的边距。
我不知道该怎么做 - 我已经尝试过每一个我能想到的春天组合。我现在正在查看子视图剪辑。
下面的图片。第一个显示初始页面加载时的滚动视图,除了下边距覆盖之外正确定位。滚动视图具有白色背景。
第二张图片显示它向上滚动:
第三张图片显示它一直向上滚动 - 请注意下边距已变为可见。
答案 0 :(得分:3)
我不是100%肯定这个,但值得拍摄:我的猜测是你可能没有在你的桌子上正确设置Bounds属性。
要解决此问题,最简单的方法是设置myscrollview.clipsToBounds = true
。
答案 1 :(得分: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。
这至少是我的理解。