У меня есть этот подкласс UIView, который я хочу использовать для отображения пользовательского представления. Проблема в том, что я не могу сделать обычай CAGradientLayer
, чтобы он появился на мой взгляд ... Я все еще вижу его как красную полоску.Невозможно добавить CAGradientLayer для отображения в подклассе UIView
public class PSTLoadingBar : UIView {
private var loadingBarView: UIView!
private var gradientLayer: CAGradientLayer!
required public init(coder aDecoder: NSCoder) {
fatalError("Not coder compliant")
}
public override var frame: CGRect {
didSet {
if frame == CGRect.zeroRect {
return
}
loadingBarView.frame = frame
}
}
// MARK: - Singleton
public class var sharedInstance: PSTLoadingBar {
struct Singleton {
static let instance = PSTLoadingBar(frame: CGRect.zeroRect)
}
return Singleton.instance
}
public override init(frame:CGRect) {
super.init(frame:frame)
loadingBarView = UIView()
loadingBarView.backgroundColor = UIColor.redColor()
gradientLayer = CAGradientLayer()
gradientLayer.frame = loadingBarView.bounds
gradientLayer.opacity = 1
let color1 = UIColor(red: 67/255, green: 36/255, blue: 84/255, alpha: 1).CGColor
let color2 = UIColor(red: 67/255, green: 36/255, blue: 84/255, alpha: 1).CGColor
let colors = [color1, color2]
gradientLayer.startPoint = CGPointMake(0,0.5)
gradientLayer.endPoint = CGPointMake(1.0, 0.5)
gradientLayer.colors = colors
loadingBarView.layer.insertSublayer(gradientLayer, atIndex:0)
addSubview(loadingBarView)
}
// MARK: - Public Methods
public class func show(parentView: UIView) {
let loadingBar = PSTLoadingBar.sharedInstance
let _view = UIApplication.sharedApplication().keyWindow?.rootViewController?.view
if let _view = _view {
loadingBar.frame = CGRectMake(0, 32, _view.bounds.width, 5)
if loadingBar.superview == nil {
_view.addSubview(loadingBar)
}
}
}
Я попытался добавить подслой в различных индексов и я также попытался с self.layer
вместо loadingBar.layer
но снова без успеха.
Я подозреваю, что мне нужно переопределить другой метод из UIView, но я не уверен, что это так.
Любые идеи?
Ваши цвета идентичны, поэтому вы не увидите градиент ... –
@IanMacDonald это не имеет значения. Я не вижу ничего близкого к цветам, я вижу красный цвет, который является «backgroundColor» UIView. Я не вижу никакого градиента, даже если бы установил два разных цвета. – Thanos