Я пытаюсь реализовать простой UIView, который будет отображаться в нижней части экрана при потере подключения к Интернету и будет иметь кнопку отклонения.Мой класс UIView выглядит примерно так:
import UIKit
class ConnectionLostAlertUIView: UIView {
@IBOutlet var view: UIView!
var viewConstraints: [NSLayoutConstraint] = []
override init(frame: CGRect) {
super.init(frame: frame)
Bundle.main.loadNibNamed("ConnectionLostAlertView", owner: self, options: nil)
self.addSubview(self.view)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
Bundle.main.loadNibNamed("ConnectionLostAlertView", owner: self, options: nil)
self.addSubview(self.view)
}
override func didMoveToSuperview() {
view.translatesAutoresizingMaskIntoConstraints = false
let bottomConstraint = view.bottomAnchor.constraint(equalTo: self.superview!.bottomAnchor)
let leftConstraint = view.leadingAnchor.constraint(equalTo: self.superview!.leadingAnchor)
let rightConstraint = view.trailingAnchor.constraint(equalTo: self.superview!.trailingAnchor)
viewConstraints = [bottomConstraint, leftConstraint, rightConstraint]
NSLayoutConstraint.activate(viewConstraints)
}
@IBAction func dismissButton(_ sender: Any) {
Logger.log(message: "Dismiss button was pressed", event: .d)
self.isHidden = true
}
И я добавляю этот UIView в свой UIViewController, выполняя следующие действия:
var ConnectionLostAlert: ConnectionLostAlertUIView!
ConnectionLostAlert = ConnectionLostAlertUIView(frame: CGRect.zero)
self.view.addSubview(ConnectionLostAlert)
Что ж, я могу использовать фактические значения для CGRect вместо нуляно проблема в том, что после добавления ограничений в мой UIView кнопка в моем UIView перестает отвечать.Это прекрасно работает, если я на самом деле устанавливаю некоторые координаты CGRect и не использую ограничения в UIView.Есть ли лучший способ сделать то, что я пытаюсь достичь, который все еще позволит мне обрабатывать событие кнопки внутри UIView?