2014-02-09 35 views
4

我有一个UIScrollView,其中包含部分绘制在滚动视图之外的其他子视图。这些视图在滚动视图上方垂直延伸。是否可以只允许子视图在滚动视图的顶部之外绘制,并且不允许它们在滚动视图的左侧和右侧之外绘制?你可以限制UIView剪辑子视图到视图的某一侧吗?

发生了什么,是因为当我手动向左和向右滚动时,由于内容大小,子视图被绘制在滚动视图之外。一旦子视图滚动到滚动视图的框架之外,我想剪辑子视图。

任何建议或可能吗?

回答

1

你不能指定你想剪辑的单个边,但是你可以通过将新的UIView放在你想要剪裁的边缘(并且有效地剪裁它)旁边来伪装。或者,您可以考虑改变视图层次结构的方式,以便根本不必剪辑子视图(也许通过以某种方式调整滚动视图的边界和布局)。

+0

我有一个UIView旁边的边缘。这个视图和scrollview都有.7个alpha级别,所以这个技巧不会很不幸。 –

4

我已经设法通过使用layermask属性和CALayer来实现此效果。下面的代码片段剪辑从顶部仅视图和视图的左侧:

let maskLayer = CALayer() 
maskLayer.backgroundColor = UIColor.blackColor().CGColor 
maskLayer.frame = CGRectMake(0, 0, 2000, 2000) 

aView.layer.mask = maskLayer 

请注意,我用任意数量2000作为裁剪最右侧的下限,所以你需要根据您希望其他视图剪辑的距离来调整数字。

+0

如果你想剪辑自上而下,但不是左 - 右,框架会是什么? – itsji10dra

+0

@RoNiT你需要保留你想要添加面具的视图边缘剪裁矩形的边缘,所以试试'CGRectMake(-2000,0,2000,aView.bounds.height)' –

相关问题