Я использую градиент в подвид UIView, вернувшись в приложение, переключившись с некоторых приложений, градиент станет черным. Не знаю, почему. Если кто-нибудь знает об этом, помогите мне здесь.Градиент превращается в черный
Также я не подклассировал его программно, прямо поместив его в место класса UIView в самой раскадровке (CustomGradientBlueView). Это может быть проблемой.? Это код, который я использую для градиента ->
import UIKit
class CustomGradientBlueView: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
// colour declarations
let gradientColor1 = UIColor(red: 0.361, green: 0.145, blue: 0.553, alpha: 1.000)
let gradientColor2 = UIColor(red: 0.263, green: 0.537, blue: 0.635, alpha: 1.000)
// gradient decalarations
let gradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [gradientColor1.CGColor,gradientColor2.CGColor], [0,1])
//rectangle drawing
var screen = UIScreen.mainScreen().bounds.size
let rectanglePath = UIBezierPath(rect: CGRectMake(0,0, screen.width, screen.height))
CGContextSaveGState(context)
rectanglePath.addClip()
CGContextDrawLinearGradient(context, gradient, CGPointMake(0,0), CGPointMake(screen.width, screen.height), 0)
}
}
Почему вы не используете CAGradientLayer? –
@MertBuran Не могли бы вы рассказать мне, как использовать CAGradientLayer для решения этой проблемы? В чем отличия? –
"после того, как вы вернулись в приложение, переключившись с некоторых приложений, градиент станет черным" Можете ли вы доказать, что, когда вы это делаете, вызывается 'drawRect:'? – matt