向UITextView添加约束更改contentOffset

时间:2014-12-21 17:50:03

标签: ios8 autolayout uitextview uistoryboard nsautolayout

我已将约束设置为文本视图,如下图所示:

enter image description here

但是正如您在模拟器上看到的那样,对于ARTIST NAME标签下的文本视图,contentOffset是不同的。似乎文本视图尝试首先显示底部然后从顶部显示文本:

enter image description here

我想尝试在没有任何代码的情况下解决此问题,但我添加了此方法,将文本视图滚动到顶部:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self.theTextView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
}

当我调试代码并在行[self.theTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO]之前打印文本视图时,文本视图的contentOffset为 0,144.5

(lldb) po self.theTextView
<UITextView: 0x7d26ac00; frame = (3 423; 153 90); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7bbbdf30>; layer = <CALayer: 0x7bbbd540>; contentOffset: {0, 144.5}; contentSize: {153, 243}>

[self.theTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO] contentOffset 0,0

之后
(lldb) po self.theTextView
<UITextView: 0x7d26ac00; frame = (3 423; 153 90); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7bbbdf30>; layer = <CALayer: 0x7bbbd540>; contentOffset: {0, 0}; contentSize: {153, 243}>

但我可以弄清楚为什么约束会带来内容偏移的一些问题。为什么在开始文本转移。没有任何约束,文本视图显示“Lorem ipsum”作为第一行,但有约束它显示“nulla pariatur ...”,因为您可以在上面的图像上看到完整的可见线,上面的线完全被截断。

1 个答案:

答案 0 :(得分:1)

在layoutSubviews中,如果UIView和viewDidLayoutSubview广告中的以下行:

[textview setContentOffset:CGPointMake(0,0)];

这对我有用。