Swift:如何让UIScrollView ClipsToBounds只能水平工作。

时间:2018-04-24 08:38:45

标签: ios swift uiscrollview

在我的视图中,左侧和右侧有两个UIScrollView,其中包含UIStackView,其中包含UIButtonUIPanGestureRecognizer

每个按钮都有UIScrollView,以便用户可以将按钮拖放到主视图中。

但是,由于拖动主视图时按钮位于scrollView.clipsToBounds = false,它们会消失,只会在按钮被删除时出现。为了防止这种情况,我已经完成了

clipsToBounds

然后拖放开始完美运行。但是,它给了我一个新问题。现在,因为滚动时falseclipToBounds,所以stackView中的按钮超出了这个范围

Screen Layout

现在,我的问题是如何限制或锁定我的滚动视图的{{1}},使其仅垂直工作,我可以水平锁定我的边界,这样当我滚动时,它不会超出界限。

1 个答案:

答案 0 :(得分:0)

正如@ CZ54在评论中所建议的那样,我已将两个滚动视图移动到一个单独的视图中,并在剩下的部分中进行了另一个视图。然后,我已经屏蔽了容器视图,以确保滚动是完美的,并且不会超出界限。

    leftScrollView.clipsToBounds = false
    rightScrollView.clipsToBounds = false        

    homeContainerView.clipsToBounds = false
    awayContainerView.clipsToBounds = false

    let leftMaskLayer = CALayer()
    leftMaskLayer.backgroundColor = UIColor.black.cgColor
    leftMaskLayer.frame = CGRect(x: 0, y: 0, width: self.centerView.bounds.width, height: self.centerView.bounds.height-50)
    leftContainerView.layer.mask = leftMaskLayer

    let rightMaskLayer = CALayer()
    rightMaskLayer.backgroundColor = UIColor.black.cgColor
    rightMaskLayer.frame = CGRect(x: -self.centerView.bounds.width, y: 0, width: self.centerView.bounds.width + 100, height: self.centerView.bounds.height)
    rightContainerView.layer.mask = rightMaskLayer