Próbuję zastosować gradient do UIImage przy użyciu CoreGraphic; jednak wynik, jaki otrzymałem, nie jest zbyt miły. Chcę utworzyć czarny do przezroczystego gradientu u dołu obrazu, aby utworzyć kontrast dla mnie, aby umieścić jakiś tekst. Jednak gradient, który udało mi się uzyskać, nie pasuje do obrazu; wyraźnie widać separację w centrum. Rezultat, którego szukam, jest podobny do tej aplikacji: http://capptivate.co/2014/02/17/yummly-3/ Jak zastosować gradient, aby to osiągnąć? (Muszę to zastosować do dużej ilości zdjęć).Stosowanie gradientu do UIImage Smoothly
Moja Wynik:
Oto mój kod:
func imageWithGradient(img:UIImage!) -> UIImage{
UIGraphicsBeginImageContext(img.size)
var context = UIGraphicsGetCurrentContext()
img.drawAtPoint(CGPointMake(0, 0))
let colorSpace = CGColorSpaceCreateDeviceRGB()
let locations:[CGFloat] = [0.50, 1.0]
//1 = opaque
//0 = transparent
let bottom = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor
let top = UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor
let gradient = CGGradientCreateWithColors(colorSpace,
[top, bottom], locations)
let startPoint = CGPointMake(img.size.width/2, 0)
let endPoint = CGPointMake(img.size.width/2, img.size.height)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Spróbuj ustawienie Y startowy a końcem poza zakresem wielkości tak gradientu obrazu będzie wyższa, a różnica w kolorze będą mniej zauważalne. Na przykład ustaw startPoint Y na '-img.size.height/4' i endPoint' img.size.height * 1,25'. Jeśli kolor na końcu ekranu wygląda zbyt przezroczysto, zwiększ alfa dolną kolorową odrobinę, tak samo jak –
@zellb Próbowałem, a linia pośrodku nadal jest dość widoczna. W przeciwieństwie do aplikacji w linku pokazałem, co jest bardzo płynne. Czy masz pojęcie, jaki jest zastosowany filtr? A może lepiej po prostu stworzyć filtr w Photoshopie i zastosować go na innym obrazie. – harinsa