UIScrollView使用autolayout和动态约束不可滚动

时间:2014-03-19 10:58:12

标签: ios objective-c uiscrollview autolayout

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

enter image description here

-(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 个答案:

答案 0 :(得分:1)

UIScrollView仅在contentSize大于bounds时才滚动。可以通过计算子视图的帧(从约束计算)或在代码中手动(通常在viewDidLoad中)自动设置UIScrollView的内容大小。 仔细检查您的UIScrollView的contentSize。