0
我想画上的图像的顶部的线性渐变。
设置
我有一个函数调用imageWithGradient
这需要的颜色和ImageView的把图像与描绘在梯度。我使用故事板添加的ImageView到视图。
问题
当尝试在模拟器上的代码,有时梯度将不会出现,有时阿尔法将不会出现(纯色),有时梯度将被翻转。由于我使用相同的颜色运行相同的代码,因此它应该对所有图像应用相同的渐变,但很少这样做。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var c1 = UIColor(red: 1.0, green: 0, blue: 0, alpha: 0.9).CGColor
var c2 = UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor
imageWithGradient(self.imageView1, startColor: c1, endColor: c2)
imageWithGradient(self.imageView2, startColor: c1, endColor: c2)
}
func imageWithGradient(imgView:UIImageView, startColor: CGColor, endColor: CGColor){
var img = UIImage(named:"sample.jpg")!
UIGraphicsBeginImageContext(img.size)
var context = UIGraphicsGetCurrentContext()
img.drawAtPoint(CGPointMake(0, 0))
var colorSpace = CGColorSpaceCreateDeviceRGB()
var startColorComp = CGColorGetComponents(startColor)
var endColorComp = CGColorGetComponents(endColor)
var colorComps = [startColorComp[0], endColorComp[0]]
var locations:[CGFloat] = [0.0, 1.0]
var gradient = CGGradientCreateWithColorComponents(colorSpace, &colorComps, &locations, 2)
var startPoint = CGPointMake(img.size.width/2, img.size.height/2)
var endPoint = CGPointMake(img.size.width/2, img.size.height)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
结果
你的答案是非常明确的。非常感谢。我试图在图像上叠加一些文本,并使用渐变为文本提供一些对比,如Flipboard [link](http:// currentphotographer。COM /可湿性粉剂内容/上传/ 2011/12 /摄影 - 12月15-11-51-33-AM.png)。 您认为这是一种有效的方法吗?因为我必须将它应用于从服务器获取的大量照片。 – harinsa 2015-02-07 06:45:17