UOLcrollView内部的Autolayout UITextView大小不正确

时间:2015-01-30 19:36:49

标签: ios objective-c uiscrollview autolayout

所以我知道关于这个问题已经有很多问题,但是我找不到一个解决了我的问题(或者我不明白答案)。

好吧,所以我设置了一个滚动视图,里面有一个UIView,顶部有一个图像视图(一个你可以忽略的渐变视图),还有一个文本视图。 textview必须随着内部的任何内容进行扩展而不进行滚动(因此为什么它在scrollView中)。

我有代码:

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    [self setupGradientView];
    [self resize];
}

- (void) resize {
    CGFloat maxWidth = [[UIScreen mainScreen] bounds].size.width;
    CGRect newFrame;

    // reset width for scrollview
    newFrame = imageView.frame;
    newFrame.size = CGSizeMake(maxWidth, imageView.frame.size.height);
    imageView.frame = newFrame;
    gradientView.frame = newFrame;
    newFrame = textView.frame;
    newFrame.size = CGSizeMake(maxWidth, textView.frame.size.height);
    //textView.frame = newFrame;


    newFrame = dummyView.frame;
    newFrame.size = CGSizeMake(maxWidth, dummyView.frame.size.height);
    dummyView.frame = newFrame;

    // resize height
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, CGFLOAT_MAX)];
    newFrame = textView.frame;
    newFrame.size = CGSizeMake(fixedWidth, newSize.height);
    //textView.frame = newFrame; 
    self.textViewHeightConstraint.constant = newSize.height;

    CGFloat dummyViewHeight = textView.frame.origin.y + textView.frame.size.height;
    dummyView.frame = CGRectMake(dummyView.frame.origin.x, dummyView.frame.origin.y, dummyView.frame.size.width, dummyViewHeight);
    [scrollView setContentSize:dummyView.frame.size];

}

不幸的是,内容大小似乎偏离了我认为可能是16pts,导致一个看起来像这样的视图与文本切断(不介意文本中的unicode混乱): enter image description here

以下是IB中视图的显示图片:https://i.imgur.com/hxzzUg2.png

以下是约束层次结构的样子:https://i.imgur.com/rUepwa2.png

非常感谢任何帮助!

编辑:如果我在调整大小函数中注释掉整个代码,我会得到相同的结果。在调用函数后,自动布局似乎正在调整所有这些...但我认为在调用viewDidLayoutSubviews时自动布局已完成?

编辑2:我试过并发现调整textView的框架甚至n viewDidAppear都没有效果。 (我可以编辑背景颜色等内容)

1 个答案:

答案 0 :(得分:0)

我最终要做的是为视图设置相等的宽度和相等的高度(而不是滚动视图),然后在viewDidLayoutSubviews中手动更改高度约束,同时更改textView的框架和内容大小。滚动视图。