如何在UIScrollView的"反弹"区域绘制?

Mic*_*ine 5 iphone uiscrollview drawrect

我有一个自定义绘制的视图,我包含在水平滚动的UIScrollView中.视图绘制背景,水平延伸的线条和一些不同的背景颜色.当我滚动到最左侧以使滚动视图"弹跳"时,我看到灰色背景颜色.我想要做的是在该区域绘制额外的背景线和颜色,以便看起来视图永远持续,但我无法弄清楚如何做到这一点.我已经尝试将所有视图的clipsToBounds设置为NO,并在视图外的区域绘制,但这似乎不起作用.我怎么能在这个区域画画?

Mic*_*ine 2

我找到了解决方案,至少就我而言是这样。我只是用额外的边距增加了滚动视图的大小,然后将滚动视图部分定位在屏幕之外。

    CGFloat scrollViewHeight = 300;
    CGFloat preferredWidthOfContent = 500;
    CGFloat gutterMargin = self.bounds.size.width / 2;
    scrollView.frame = CGRectMake(-1 * gutterMargin, 0, self.bounds.size.width, scrollViewHeight)
    scrollView.contentSize = CGSizeMake(preferredWidthOfContent + 2 * gutterMargin, scrollViewHeight);
    contentView.frame = CGRectMake(0, 0, preferredWidthOfContent + 2 * gutterMargin, scrollViewHeight);
Run Code Online (Sandbox Code Playgroud)

内容视图必须了解装订线边距宽度,然后根据该宽度在正确的位置绘制实际内容。当scrollView被“弹起”时,内容视图的其余部分实际上被显示。

这个技巧之所以有效,是因为滚动视图延伸到了屏幕之外。如果您想对不接触屏幕边缘的滚动视图使用相同的技巧,则只需在滚动视图的顶部放置另一个视图即可隐藏额外的空间。