【问题标题】:AutoLayout Scrolling UITextView sizeThatFits not working自动布局滚动 UITextView sizeThatFits 不起作用
【发布时间】:2016-02-08 17:48:03
【问题描述】:

在我的 UIViewController 中,我有一个启用滚动的不可编辑属性 UITextView,我想调整滚动文本的高度以适应所有屏幕尺寸宽度,而无需额外的空白空间。我正在使用 AutoLayout 并为 textview 及其高度约束设置插座。在视图控制器的 viewDidLoad 方法中我使用 sizeThatFits 方法来更新 textview 的高度,但是结果尺寸太小了。

- (void)viewDidLoad{
    [super viewDidLoad];
    NSLog(@"INIT HEIGHT: %f, myTextView.frame.size.height);
    CGSize sizeToFit =
    [myTextView sizeThatFits: CGSizeMake(myTextView.frame.size.width, MAXFLOAT)];
    myTextViewHeightConstraint.constant = sizeToFit.height;
    [myTextView updateConstraints];
    [myTextView layoutIfNeeded];
    NSLog(@"NEW HEIGHT: %f", myTextView.frame.size.height);
}

日志表明高度确实从我的默认值 4000 更改为 2502,但是对于 2502,我只能通过滚动看到大约一半的文本。正如一种解决方案所建议的那样,我避免将文本视图嵌套在滚动视图中,因为在文档中不鼓励这样做。我错过了什么?提前致谢。

【问题讨论】:

    标签: objective-c scroll resize autolayout uitextview


    【解决方案1】:

    我发现UITextView 的框架会自动调整到其内容的大小,因此不需要动态设置。 sizeThatFits 是一个 UIView 方法,不会修改文本内容的大小,而是修改文本所在窗口的大小。我需要的唯一代码是将文本滚动到顶部:

        [myTextView scrollRectToVisible: CGRectMake(0,0,1,1) animated:NO];
    

    不应在viewDidLoad 中进行此以及任何自动布局约束更新,而应在viewDidLayoutSubviewsviewWillAppear 中进行。最好的位置可能会更好地解释 - 我对 cme​​ts 持开放态度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多