你能将UIView剪辑子视图限制在视图的某些边吗?

Jus*_*ore 6 subview uiscrollview uiview ios cliptobounds

我有一个UIScrollView,其中包含部分绘制在scrollview之外的其他子视图.这些视图在滚动视图上方垂直延伸.是否可以仅允许在滚动视图的顶部之外绘制子视图,而不允许在滚动视图的左侧和右侧之外绘制它们?

发生的事情是,当我手动向左和向右滚动时,由于内容大小,子视图正在滚动视图之外绘制.一旦子视图在滚动视图的框架之外滚动,我想剪切子视图.

有任何建议或可能吗?

Max*_*mia 11

我已经设法通过使用layer's mask属性和CALayer 来实现这种效果.以下代码段仅剪切视图顶部和左侧的视图:

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

aView.layer.mask = maskLayer
Run Code Online (Sandbox Code Playgroud)

请注意,我使用任意数字2000作为剪切的最右边界和下边界,因此您需要根据您希望其他视图剪辑的距离来调整数字.


lxt*_*lxt 0

您无法指定要剪辑的各个边,但您基本上可以通过在UIView要剪辑的边缘旁边放置一个新边来伪造这一点(从而有效地剪辑它)。或者,您可以考虑更改视图层次结构的方法,以便根本不必剪切子视图(也许通过以某种方式调整滚动视图的边界和布局)。