UIScrollView 不能使用自动布局和动态约束滚动

Posted

技术标签:

【中文标题】UIScrollView 不能使用自动布局和动态约束滚动【英文标题】:UIScrollView not scrollable using autolayout and dynamic constraints 【发布时间】:2014-03-19 10:58:12 【问题描述】:

我有一个包含滚动视图、容器视图和 3 个子视图(顶视图、文本视图和底视图)的视图。请参阅下面的视图层次结构。 textview 的高度是根据其内容定义的。我为其高度定义了一个动态约束,并在 viewDidLayoutSubviews 中对其进行了更改。 textview 的大小是正确的,但问题是我的滚动视图没有滚动。我做错了什么?也许我需要添加/修改其他一些约束?

-(void)viewDidLayoutSubviews

    NSAttributedString * string = [[NSAttributedString alloc] initWithString:self.game.description];
    CGFloat heightTV = [self textViewHeightForAttributedText:string andWidth:260];
    self.dynamicTVHeight.constant = heightTV;
    [self.view layoutIfNeeded];


- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width

    UITextView *textView = [[UITextView alloc] init];
    [textView setAttributedText:text];
    CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height;

【问题讨论】:

【参考方案1】:

UIScrollView 只有在 contentSize 大于边界时才会滚动。 UIScrollView 的内容大小可以通过计算子视图的帧数(根据约束计算)来自动设置,也可以在代码中手动设置(通常在 viewDidLoad 中)。 仔细检查你的 UIScrollView 的 contentSize。

【讨论】:

contentSize 大于界限

以上是关于UIScrollView 不能使用自动布局和动态约束滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UIScrollView 与自动布局和动态内容一起使用? [复制]

如何使用情节提要和自动布局在 UIScrollView 中添加动态高度/空间元素? [复制]

包含动态 TableView 高度的 UIScrollView 的自动布局

使用自动布局向 UIScrollView 添加动态大小的视图(高度)

UIScrollView 不能使用情节提要垂直滚动(使用自动布局)?

UIScrollView 动态高度内容(自动布局)没有填满整个空间