繁体   English   中英

UIScrollView内具有子视图的UIView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM