UIButton 在带有 UIPageControl 的 UIScrollView 中不可见 - Swift 3

UIButton not visible in UIScrollView with UIPageControl - Swift 3

我正在动态创建一个滚动视图,并且有一个与 it.I 关联的页面控件有一个按钮数组,这些按钮被添加到滚动视图 dynamically.While 这些按钮被添加到第一页可见,有些按钮不可见,但它们正在添加到滚动视图中。

UIScrollView frame = CGRect(x: 0, y: 0, width: 340, height: 150) scrollView.contentSize = CGSize(宽度: scrollView.frame.size.width * CGFloat(页面), 高度: scrollView.frame.size.height)

在我的例子中,我有 2 个页面,所以内容宽度是 680。 滚动视图时,滚动视图的内容偏移量为 340,虽然不可见的按钮在 contentSize 内,但按钮仍然不可见,

以下是不可见的按钮边框,

<UIButton: 0x7ffdf0f26bb0; frame = (355 10; 62 32); opaque = NO; layer = <CALayer: 0x610000030840>>, 
<UIButton: 0x7ffdf0f27110; frame = (427 10; 98 32); opaque = NO; layer = <CALayer: 0x610000030960>>,
<UIButton: 0x7ffdf0f27670; frame = (535 10; 112 32); opaque = NO; layer = <CALayer: 0x610000030a80>>

就页面控件而言,即使我删除了页面控件,我也会在滚动视图中看到相同的行为。 我不确定我是否必须检查滚动视图上的任何特定内容。

@IBAction func changePage(sender: UIPageControl) -> () {
        let x = CGFloat(pageControl.currentPage + 1) * scrollView.frame.size.width
        scrollView.setContentOffset(CGPoint(x: x,y :scrollView.frame.size.height), animated: true)
    }

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
        pageControl.currentPage = Int(pageNumber)
    }

问题不在于页面控件或 scrollview,我使用了 scrollView 的圆角扩展,导致了这个问题,

扩展 UIView {

func roundCorners(corners:UIRectCorner, radius: CGFloat) {
    let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
    let mask = CAShapeLayer()
    mask.path = path.cgPath
    self.layer.mask = mask
}}

我仍然不明白为什么向图层添加蒙版会弄乱 scrollView。