自动布局,UiScrollView中的UITableView不会增长



我在故事板上有这个结构(我添加了一些示例名称以非常理解(:

  • uiview (主视图(" blackview"

    - uiscrollview (在主视图中("橙色"

    • uiview " yelloview"(主滚动中的contentView(
      • uitaiteView " bluview"(内部和contentview的顶部(
      • uiview " redview"(在内容视图内部和相同级别的Uaithitview(

我想实现什么?我想要一张与他的行号相称生长的桌子(行高度固定为60(。我还想要一个在content_size和滚动功能中增长到blueview和redview的高度之和的uiscrollview。

自动划分约束是:

UISCROLLVIEW" OrangeView":(顶部0,尾随0,底部0,领先0(

uiview" yelloview":(top 0,尾巴0,底部0,底部0,领先0((相等宽度与主eD等于主的高度与main" blackview",底部优先级"低"(<(

uitabelView" bluview":(顶部0,尾随0,领先0(

我有一个从视图的顶部到底部的完整约束链。uitableview可以免费成长,因为我没有直接设置他的"高度"约束,而uitableview setScrollingEnabled是错误的。结果是一个不会生长的表观视图。

我可以通过代码生成生长:

Table.frame=CGRectMake(BluView.frame.origin.x, BluView.frame.origin.y, BluView.frame.size.width, BluView.contentSize.height);

i工作,表格和"橙色"滚动content_size正确生长,但是" redview"不响应此帧的更改,并且不会移动到距离的新"表底部" AD 2。p>我已经尝试刷新约束系统的内容:

    [BlackView layoutIfNeeded];
    [BlackView setNeedsUpdateConstraints];
    [RedView layoutIfNeeded];
    [ScrollContainer layoutIfNeeded];
    [RedView layoutIfNeeded];
    [RedView setNeedsUpdateConstraints];
    [OrangeView setNeedsUpdateConstraints];
    [RedView updateConstraints];
    [OrangeView updateConstraints];
    [BlackView updateConstraints];
    [BluView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [RedView setTranslatesAutoresizingMaskIntoConstraints:NO];

我已经在更改框架更改之前和之后都调用了这些方法,它们不会刷新Redview的Y位置。我如何获得所需的行为?有一种方法可以创建一种类型的" costraints树",或者可能还有另一种方法可以在我编程上更改tableview框架之后刷新Redview的位置?

uitaiteView可以免费生长,因为我没有直接设置他的"高度"约束,而Uaithitview SetScrollingEnabled是错误的。

setscrollingenabled设置为False不会告诉TableView具有其内容的高度,它只是禁用滚动行为。因此,如果您的桌面视图高200点,并且您的内容为500pt,那么您将永远不会在底部看到300pt。

每次contentSize更改时,在表观视图中添加一个高度约束,并使用TableView的contentSize.height更新其常数。这样,它将始终具有其内容的大小,并且由于它在scrollview中,您仍然可以滚动查看所有内容。

ps:如果它只是蓝色和红色视图的容器,那么黄色的视图是无用的。

最新更新