如何绘制UIScrollView的“反弹”区域?

| 我有一个自定义绘制的视图,该视图包含在水平滚动的UIScrollView中。该视图绘制了水平延伸的线条和一些不同背景颜色的背景。当我滚动到最左侧以使滚动视图“反弹”时,我看到的是灰色背景色。我想做的是在该区域中绘制其他背景线和颜色,以使该视图看起来像永远在继续,但是我不太清楚该怎么做。我尝试将所有视图的clipsToBounds设置为NO,并在视图外部绘制区域,但这似乎不起作用。我如何在这个区域画画?     
已邀请:
至少就我而言,我找到了解决方案。我只是简单地增加了滚动视图的大小,然后将滚动视图的一部分移到了屏幕之外。
    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);
内容视图必须知道装订线边距宽度,然后在此基础上将实际内容绘制在正确的位置。当scrollView被“反弹”时,内容视图的其余部分实际上被显示。 之所以有效,是因为scrollview正在扩展到屏幕之外。如果要对滚动视图使用不触摸屏幕边缘的相同技巧,则只需在滚动视图的顶部放置另一个视图即可隐藏额外的空间。     
如果您以
drawRect:
方法绘制线,则无法将其绘制到视图范围之外。属性“ 2”仅影响子视图,因此,从理论上讲,您可以在主视图(显示内容的视图)中添加一个子视图,并在其右侧延伸一个框架,并在该子视图中绘制线条。 另一个选择是将子视图添加到滚动视图并将其放置在主视图的右侧。然后在此子视图中绘制线条。滚动视图仍会反弹,因为它并不关心其中是否仍存在部分可见的视图,它仅查看
contentSize
属性来决定何时停止滚动。 如果这两种方法都不适合,请更详细地描述您要绘制的线条以及想要实现的外观。     

要回复问题请先登录注册