[英]UIView with Subviews inside UIScrollView
我有一个包含ScrollView的View。 该Scrollview包含一个UIView(称为ContentView),而该UIView又有两个我要在其间滚动的子视图。
运行时,以下是各种视图的值:
ContentView(在UIScrollView内部):
Width: 640
Height: 568
ContentView内部的subView(UIView):
1个
X: 0
Y: 0
Width: 320
Height: 568
2
X: 320
Y: 0
Width: 320
Height: 568
ScrollView:
Width: 320
Height: 568
ContentSize:
Width: 640
Height: 568
我以编程方式(使用for循环)将子视图添加到内容视图,然后相应地更改ContentView的Bounds
和ScrollView的ContentSize
,如下所示:
for (var i = 0; i < 2; i++) {
var page = ViewModel.Items[i];
var pageView = CreatePage(page);
pageView.Frame = new CGRect(View.Bounds.Width*i, 0, View.Bounds.Width, View.Bounds.Height);
ContentView.Add (pageView);
}
ContentView.Frame = new CGRect (0, 0, View.Bounds.Width * 2, View.Bounds.Height);
ScrollView.ContentSize = new CGSize (ContentView.Bounds.Width, ContentView.Bounds.Height);
当我加载应用程序时,这就是我得到的:
仅有一个子视图未启用滚动。 如何使水平滚动正常工作?
感谢您的任何答复! :-)
您以错误的方式设置了ContentView.Frame和ScrollView.ContentSize。 滚动视图的框架应与屏幕的边界相同,而contentSize等于实际内容的大小。
除非内容大小大于实际的UIScrollView实例的框架,否则UIScrollview不会滚动。
ContentView.Frame = new CGRect (0, 0, View.Bounds.Width, View.Bounds.Height);
ScrollView.ContentSize = new CGSize (ContentView.Bounds.Width*2, ContentView.Bounds.Height);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.