[ios]我不完全理解 scrollRectToVisible 时,我使用 contentInset

发布时间: 2015/3/29 14:50:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我非常大的文本添加到 UItextView 中。我最初的偏移量是-55。然后我滚动到底部的 UITextView。我的偏移是 406。

然后 scrollToZero 调用我的偏移量是-55。我叫 scrollToZero,我的偏移量为 0。ScrollToZero 为什么是如此变化莫测的?我不的懂为什么偏移量更改当我再一次点击。

-(void) viewDidLoad
{
 [super viewDidLoad];
 textView.text = @"Very big text";
 textView.contentInset = UIEdgeInsetsMake(55.0, 0, 0, 0);
 [textView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
}

-(IBAction) scrollToZero:(id)sender
{
 [textView scrollRectToVisible:CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height) animated:NO];
}
-(IBAction) onLog:(id)sender
{
 NSLog(@"___content offset %f", textView.contentOffset.y);
}

解决方法 1:

我一直在这个问题。我深信这是 UIScrollView 类中的一个 bug,我可以看到没有其他的解释。

首先将你的内边距设置为零,叫 scrollRectToVisible: 动画:,然后还原您的插入。它只有事项如果滚动到 rect '留下的' 当前矩形右的作品如预期。

CGRect rect = self.scrollView.bounds;
CGRect scrollToRect = CGRectOffset(rect, scrollDelta, 0);

if (CGRectIsLeftOfRect(scrollToRect, rect)) {
    UIEdgeInsets insets = self.carouselView.contentInset;
    self.scrollView.contentInset = UIEdgeInsetsZero;
    [self.scrollView scrollRectToVisible:scrollToRect animated:animated];
    self.scrollView.contentInset = insets;
} else {
    [self.scrollView scrollRectToVisible:scrollToRect animated:animated];
}
官方微信
官方QQ群
31647020