Sublayer не появляется

Имея этот код:

private let topView: UIView = {
    let view = UIView()
    view.translatesAutoresizingMaskIntoConstraints = false
    view.backgroundColor = UIColor(red: 216, green: 216, blue: 216)
    return view
}()

private lazy var typeLabel: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.textAlignment = .center
    label.text = self.searchType == SearchType.why ? "Why" : "What"
    label.font = UIFont.systemFont(ofSize: 28)
    return label
}()

private func setupViews() {
        self.view.addSubview(topView)
        self.topView.addSubview(typeLabel)

        self.view.addSubview(tableView)

        self.topView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
        self.topView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
        self.topView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
        self.topView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 1/8).isActive = true

        self.typeLabel.topAnchor.constraint(equalTo: self.topView.topAnchor, constant: 20).isActive = true
        self.typeLabel.leadingAnchor.constraint(equalTo: self.topView.leadingAnchor).isActive = true
        self.typeLabel.widthAnchor.constraint(equalTo: self.topView.widthAnchor, multiplier: 1/4).isActive = true

    }



 private func borderLayer(position: CGPoint?, size: CGSize?) -> CALayer {
        let borderLayer = CALayer()

        borderLayer.anchorPoint = CGPoint(x: 0.5, y: 0.5)
        borderLayer.name = "Border"

        borderLayer.backgroundColor = UIColor.red.cgColor
        borderLayer.position = position == nil ? CGPoint.zero : position!
        borderLayer.bounds.size = size == nil ? CGSize.zero : size!

        borderLayer.borderWidth = 5
        borderLayer.borderColor = UIColor.black.cgColor
        borderLayer.shadowOpacity = 1.0
        borderLayer.shadowOffset = CGSize(width: 20,height: 20)

        return borderLayer
    }

Проблема содержится, в котором borderLayer меня typeLabel он не появляется. Положение и размер правильны. Я сделал доказательство помещая его borderLayer в topView и он появляется правильно, сейчас проблема, - когда это добавляет в поле зрения дочь topView. В чем я ошибаюсь для того, чтобы он не явился layer?

Полный код: https://drive.google.com/file/d/0B3Bifi1jRejMVEZVUU1STVFNbTg/view? usp=sharing

0
задан 25.01.2017, 20:24
0 ответов

Измени следующие части твоего кода;

addViewBorderLayer (view: UIView)

private func addViewBorderLayer(view: UIView) {

    view.layoutIfNeeded() // Añade esto al principio de todo

    [...]

}

borderLayer (position: CGPoint?, size: CGSize?)

private func borderLayer(position: CGPoint?, size: CGSize?) -> CALayer {

    let borderLayer = CALayer()
    borderLayer.anchorPoint = CGPoint(x: 1.0, y: 1.0)

    [...]

    borderLayer.position = CGPoint(x: size!.width, y: size!.height)

    [...]

}

Обновление 1

Меняя эти две линии, я получаю следующий результат:

introducir la descripción de la imagen aquí

1
ответ дан 03.12.2019, 17:30
  • 1
    Останься, не совсем не появляясь, но для меня проблема не приходит из anchorPoint или posició n, потому что, если тот же край это добавил в поле зрения отец (topView), если оно функционирует, как он должен –  26.01.2017, 04:06
  • 2
    Я обновил ответ, с которым получаю я. Я перемещаю тебя пример, который сделал я: dropbox.com/s/ejvpcx65jrpxqnu/Test.zip?dl=0 –  26.01.2017, 10:59
  • 3
    Если, там уже он прошел меня, большое спасибо –  26.01.2017, 17:25