我有一个UIScrollView,其中包含部分绘制在滚动视图之外的其他子视图。这些视图在滚动视图上方垂直延伸。是否可以只允许子视图在滚动视图的顶部之外绘制,并且不允许它们在滚动视图的左侧和右侧之外绘制?你可以限制UIView剪辑子视图到视图的某一侧吗?
发生了什么,是因为当我手动向左和向右滚动时,由于内容大小,子视图被绘制在滚动视图之外。一旦子视图滚动到滚动视图的框架之外,我想剪辑子视图。
任何建议或可能吗?
我有一个UIScrollView,其中包含部分绘制在滚动视图之外的其他子视图。这些视图在滚动视图上方垂直延伸。是否可以只允许子视图在滚动视图的顶部之外绘制,并且不允许它们在滚动视图的左侧和右侧之外绘制?你可以限制UIView剪辑子视图到视图的某一侧吗?
发生了什么,是因为当我手动向左和向右滚动时,由于内容大小,子视图被绘制在滚动视图之外。一旦子视图滚动到滚动视图的框架之外,我想剪辑子视图。
任何建议或可能吗?
你不能指定你想剪辑的单个边,但是你可以通过将新的UIView
放在你想要剪裁的边缘(并且有效地剪裁它)旁边来伪装。或者,您可以考虑改变视图层次结构的方式,以便根本不必剪辑子视图(也许通过以某种方式调整滚动视图的边界和布局)。
我已经设法通过使用layer
的mask
属性和CALayer来实现此效果。下面的代码片段剪辑从顶部仅视图和视图的左侧:
let maskLayer = CALayer()
maskLayer.backgroundColor = UIColor.blackColor().CGColor
maskLayer.frame = CGRectMake(0, 0, 2000, 2000)
aView.layer.mask = maskLayer
请注意,我用任意数量2000
作为裁剪最右侧的下限,所以你需要根据您希望其他视图剪辑的距离来调整数字。
如果你想剪辑自上而下,但不是左 - 右,框架会是什么? – itsji10dra
@RoNiT你需要保留你想要添加面具的视图边缘剪裁矩形的边缘,所以试试'CGRectMake(-2000,0,2000,aView.bounds.height)' –
我有一个UIView旁边的边缘。这个视图和scrollview都有.7个alpha级别,所以这个技巧不会很不幸。 –