У меня есть этот подкласс UIView, который создал объект UILabel и добавил его как подпредставление. Код ниже. Я помещаю объект UIView в представление контроллера представления, и я устанавливаю подкласс в свой подкласс UTIDropDownView. Когда я запускаю приложение на устройстве, я вижу линию, которую я рисую, но не вижу объекта UILabel.
Может кто-нибудь сказать мне, что я делаю не так?
import UIKit
class UTIDropDownView: UIView {
var label = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
let labelFrame = CGRect(width: frame.width - frame.height, height: frame.height)
label = UILabel(frame: labelFrame)
addSubview(label)
label.text = "UTIDropDownView"
label.isHidden = false
label.isUserInteractionEnabled = true
label.backgroundColor = UIColor.red
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: label, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1, constant: 0).isActive = true
NSLayoutConstraint(item: label, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1, constant: frame.height).isActive = true
NSLayoutConstraint(item: label, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1, constant: 0).isActive = true
NSLayoutConstraint(item: label, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1, constant: 0).isActive = true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
let labelWidth: CGFloat = frame.width - frame.height
let triangleBorder: CGFloat = frame.height * 0.1
let path = UIBezierPath()
UIColor.darkGray.setStroke()
path.move(to: CGPoint(x: labelWidth + triangleBorder, y: triangleBorder))
path.addLine(to: CGPoint(x: frame.width - triangleBorder, y: triangleBorder))
path.stroke()
}
}
Когда я добавляю следующий код в Draw (_:)
print(rect)
Я получаю следующие результаты печати:
(0,0, 0,0, 120,0, 30,0)