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 添加动态大小的视图(高度)