Объекты очищаются при добавлении subLayer в UIView

Я использую пользовательский класс UIView, в котором есть текстовые поля и метки, любезно предоставленные Storyboard. Когда класс добавляет подслой внутри класса, содержащиеся объекты в представлении исчезают, становятся прозрачными или, возможно, приобретают тот же цвет, что и фон UIView. Есть ли свойство, которое можно установить, или метод, который можно использовать, чтобы гарантировать, что объекты остаются видимыми?

Заранее спасибо!

Вот мой код:

class viewBorder: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func drawRect(rect: CGRect) {
        super.drawRect(rect)

        // Create a rect with only 1x rounded corner
        let rectPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: UIRectCorner.TopLeft, cornerRadii: CGSize(width: 21.0, height: 21.0))
        let rectLayer = CAShapeLayer()
        rectLayer.shadowOffset = CGSize(width: -1.5, height: -1.5)
        rectLayer.shadowOpacity = 0.6
        rectLayer.path = rectPath.CGPath
        rectLayer.fillColor = tintColor.CGColor
        self.layer.addSublayer(rectLayer)
    }
}

person madmac    schedule 16.08.2015    source источник


Ответы (1)


Попробуй это:

override func drawRect(rect: CGRect) {
    super.drawRect(rect)

    // Create a rect with only 1x rounded corner
    let rectPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: UIRectCorner.TopLeft, cornerRadii: CGSize(width: 21.0, height: 21.0))
    let rectLayer = CAShapeLayer()
    rectLayer.shadowOffset = CGSize(width: -1.5, height: -1.5)
    rectLayer.shadowOpacity = 0.6
    rectLayer.path = rectPath.CGPath
    rectLayer.fillColor = tintColor.CGColor
    rectLayer.zPosition = -1 // Added
    self.layer.addSublayer(rectLayer)
}
person Bannings    schedule 16.08.2015
comment
МОЙ БОГ!!! Ты гений! Работал отлично. Я никогда раньше не упоминал «zPosition»! - person madmac; 16.08.2015
comment
Если это решило вашу проблему, пожалуйста, проголосуйте и примите ее :) - person Bannings; 16.08.2015
comment
Еще раз спасибо @Bannings - я пытался проголосовать, но, поскольку я новичок, он не отображается публично (очевидно?) - person madmac; 16.08.2015
comment
Возможно, вашей репутации недостаточно. Все равно, не важно :) - person Bannings; 16.08.2015