在UIViewController中为Xamarin启用滚动

时间:2014-07-30 08:31:32

标签: uiviewcontroller xamarin.ios xamarin scrollview

我有一个通过Xamarin Studio中的Storyboard创建的UIViewController,它不会滚动。

我的内容是动态的,视图的高度应根据从数据库加载的数据而有所不同。我搜索过,我无法找到一种方法来在Xamarin中以编程/动态方式设置它。

我已经看到一些建议,我应该把它放在滚动视图中,但我不知道如何在ScrollView中放置控件。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

因此,您需要将UIScrollview控件拖入View Controller。将此滚动视图与插座连接。

现在为了滚动滚动视图 - >它需要知道它将要持有的内容的高度。有两种方法可以定义:

如果您使用自动布局

  1. 将所有Scroll View边缘固定到根视图。
  2. 确保滚动视图只有一个后代视图。
  3. 将其他所有内容视为后代视图的子视图。
  4. 将后代视图边缘固定到滚动视图。
  5. 在后代视图和根视图之间设置相等的宽度约束(scrollview的superview)。
  6. 将后代视图中的最低子视图固定到底边 后代观点。
  7. 布局结构

    [Root View]
      [ScrollView]
        [Descendant View]
          [UILabel]
          [UITextField]
          [UIButton]
          ...
    

    这将动态设置ScrollView的内容大小。

    如果您没有使用自动布局

    您需要确定内容的高度,然后设置ScrollView.ContentSize = height of the content

答案 1 :(得分:1)

更好的选择是使用UITableViewDataSource和UITableViewDelegate创建UITableView。然后,对于每种类型的控件,您将实现UITableViewCell。下面是通用表视图的一个示例,它允许您覆盖高度和单元格getter,它们是动态表视图中最重要的部分。源代码适用于Xamarin Forms,但可以使用原生UITableView。

https://github.com/XForms/Xamarin-Forms-Labs/blob/master/src/Xamarin.Forms.Labs/Xamarin.Forms.Labs.iOS/Controls/DynamicListView/DynamicListViewRenderer.cs