在UIScrollView中使用Cirrious.FluentLayouts.Touch进行Autolayouts

我必须在scrollView中使用autolayout来做一个ViewController,但是这里有一些问题:

public SomeVC() : UIViewController { _mainScrollView = new UIScrollView { ShowsHorizontalScrollIndicator = false, ShowsVerticalScrollIndicator = true, BackgroundColor = UIColor.Clear, ScrollEnabled = true, AutoresizingMask = UIViewAutoresizing.FlexibleHeight, TranslatesAutoresizingMaskIntoConstraints = true }; _userDataTableView = new UITableView(CGRect.Empty, UITableViewStyle.Grouped); _userDataTableView.LayoutIfNeeded(); _saveButton = new UIButton(); _menuTableView = new UITableView(CGRect.Empty, UITableViewStyle.Grouped); _menuTableView.LayoutIfNeeded(); _logoutButton = new UIButton(); } public override void LoadView() { base.LoadView(); View = _mainScrollView; } public override void ViewDidLoad() { base.ViewDidLoad(); Add(_userDataTableView); Add(_saveButton); Add(_menuTableView); Add(_logoutButton); _mainScrollView.AddConstraints( _userDataTableView.AtTopOf(View), _userDataTableView.AtLeftOf(View), _userDataTableView.AtRightOf(View), _userDataTableView.Height().EqualTo(_userDataTableView.ContentSize.Height), _saveButton.Below(_userDataTableView, 20), _saveButton.AtLeftOf(_mainScrollView, 10), _saveButton.AtRightOf(_mainScrollView, 10), _saveButton.Height().EqualTo(44), _menuTableView.Below(_saveButton, 20), _menuTableView.AtLeftOf(_mainScrollView), _menuTableView.AtRightOf(_mainScrollView), _menuTableView.Height().EqualTo(_menuTableView.ContentSize.Height), _logoutButton.Below(_menuTableView, 20), _logoutButton.AtLeftOf(_mainScrollView, 10), _logoutButton.AtRightOf(_mainScrollView, 10), _logoutButton.Height().EqualTo(44) ); _mainScrollView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); } 

实际上,它工作,但内容宽度大约是屏幕宽度的一半,滚动不起作用。 如何得到它的作品?

据我了解,问题是 – _mainScrollView.ContentSize,但如何以及在哪里应该设置它,当使用autolayouts?

解决scheme发现:第一:

  _userDataTableView.AtLeftOf(View), _userDataTableView.AtRightOf(View), 

是无效的,而不是这个,我们应该使用:

  _userDataTableView.AtLeftOf(View), _userDataTableView.WithSameWidth(View), 

如果我们需要保证金,我们只是添加

  _userDataTableView.WithSameWidth(View).Minus(MARGIN) 

而我们必须做的最后一件事情是:

  _logoutButton.Height().EqualTo(44), _logoutButton.Bottom().EqualTo().BottomOf(_mainScrollView).Plus(10) 

最后一行非常重要。 它说scrollView正确的内容大小。