iOS 10上不使用CAGradientLayer的UIVisualEffectView

iOS 10上不使用CAGradientLayer的UIVisualEffectView,ios,swift,ios10,Ios,Swift,Ios10,我试图创造一种效果,使照片顶部模糊,但底部不模糊,模糊度逐渐“消失”。我使用下面的代码实现了这一点,它在iOS9中运行良好,但在iOS10中没有 我知道一个已知的bug,比如,它阻止一个层在同一层上有遮罩和模糊 我的问题和链接的问题之间的区别在于,我对使用CAShapeLayer作为我的面具不感兴趣,而是使用CAGradientLayer。我尝试过以不同的顺序添加视图/遮罩/层,但运气不太好 var visualEffectView = UIVisualEffectView(effect

我试图创造一种效果,使照片顶部模糊,但底部不模糊,模糊度逐渐“消失”。我使用下面的代码实现了这一点,它在iOS9中运行良好,但在iOS10中没有

我知道一个已知的bug,比如,它阻止一个层在同一层上有遮罩和模糊

我的问题和链接的问题之间的区别在于,我对使用CAShapeLayer作为我的面具不感兴趣,而是使用CAGradientLayer。我尝试过以不同的顺序添加视图/遮罩/层,但运气不太好

    var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
    visualEffectView.frame = CGRect(x: 0.0, y:0.0, width: photo.bounds.width, height: photo.bounds.height)
    photo.addSubview(visualEffectView)

    let maskStartColour = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
    let maskEndColour = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)

    let gradient = CAGradientLayer()
    gradient.frame = CGRect(x: 0, y: 0, width: visualEffectView.bounds.width, height: visualEffectView.bounds.height)
    let colors: [AnyObject] = [maskStartColour.cgColor, maskEndColour.cgColor]
    gradient.colors = colors
    gradient.startPoint = CGPoint(x: 0.0, y: 0.0)
    gradient.endPoint = CGPoint(x: 0.0, y: 1.0)


    visualEffectView.layer.mask = gradient

尝试使用xcode 10和11,效果很好-尝试将效果视图添加到UIVC.view而不是照片视图?这是我实现中唯一的不同(除了使用IB)嘿-谢谢你尝试一下!它在iOS 10上看起来一样吗?我问这个问题的原因是我知道iOS 11中已经修复了已知的bug。我发现你在iOS 10-Xcode 8.3.3.3上的代码行为不正常。该死!被xcode测试欺骗了。我必须承认,那是很蹩脚的。当我切换到iOS10时,我肯定会遇到这种情况。(用旧的xcode试过了,是的,不行)是的。我很想接受这样一个事实,在iOS 11推出之前,最好忽略这个问题。我将以一种方式构建我的视图,这意味着虽然效果不好,但不会破坏iOS 10上的用户体验。我会把这个问题留待讨论,以防有人想出什么花招来回避它。