毛玻璃效果代码例子如下:
let testView = UIView(frame: CGRect(x: self.view.frame.width/2 - 100, y: self.view.frame.height/2 - 100, width: 200, height: 200))
testView.backgroundColor = UIColor(red: 249/255.0, green: 249/255.0, blue: 249/255.0, alpha: 0.7)
//毛玻璃
let blurEffect = UIBlurEffect (style: .light )
let blurView = UIVisualEffectView (effect: blurEffect)
//给毛玻璃添加背景颜色以及透明度
blurView.backgroundColor = UIColor(red: 249/255.0, green: 249/255.0, blue: 249/255.0, alpha: 0.3)
blurView.frame.size = CGSize (width: testView.frame.width, height: testView.frame.height)
testView.addSubview(blurView)
实现颜色渐变代码方法如下:
func createGradientLayer(startColor : UIColor, endColor : UIColor, width : CGFloat, height : CGFloat) -> UIImage{
let layer : CAGradientLayer = CAGradientLayer ()
let gradientColors: [CGColor] = [startColor.cgColor, endColor.cgColor]
let gradientLocations: [NSNumber] = [0.0, 1.0]
layer.colors = gradientColors
layer.locations = gradientLocations
layer.startPoint = CGPoint(x: 0, y: 0)
layer.endPoint = CGPoint(x: 1, y: 0)
layer.frame = CGRect(x: 0, y: 0, width: width, height: height)
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, 0)
if let context = UIGraphicsGetCurrentContext() {
layer.render(in: context)
}
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
使用方式如下
let testView = UIView(frame: CGRect(x: self.view.frame.width/2 - 100, y: self.view.frame.height/2 - 100, width: 200, height: 200))
testView.backgroundColor = UIColor(patternImage: createGradientLayer(startColor: .yellow, endColor: .black, width: 200, height: 200))
更多颜色、更多描点
//生成渐变色图片,参数一传递的是线性的点,参数二传递的是颜色,参数三传递的是生成的大小(颜色必须大于2)
func createGradientLayer(points: [CGPoint],colors: [CGColor], size: CGSize) -> UIImage{
let layer : CAGradientLayer = CAGradientLayer ()
let gradientColors: [CGColor] = colors
layer.colors = gradientColors
let gradientLocations: [NSNumber] = [0.0,1.0]
layer.locations = gradientLocations
layer.startPoint = points[0]
for index in 1 ..< (colors.count - 1) {
layer.anchorPoint = points[index]
}
layer.endPoint = points[colors.count - 1]
layer.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, 0)
if let context = UIGraphicsGetCurrentContext() {
context.strokePath()
context.setStrokeColor(UIColor.black.cgColor)
layer.render(in: context)
}
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}