Отображение пользовательского UIView в ViewController - PullRequest
0 голосов
/ 25 февраля 2019

Я создаю UIView, который я хочу отобразить в моем контроллере представления.Я создал UIView, и он показывает, но у меня есть следующие проблемы:

  1. Когда я вызываю UIView в моем контроллере представления, я больше не могу взаимодействовать с элементами представленияконтроллер.CustomView, который я создал, полностью предотвратил взаимодействие с моим контроллером представления, и я хочу иметь возможность взаимодействовать с UIViewController.

  2. Я хочу скрыть строку состояния, которая включает батареюпроцент и сетевой бар и другие вещи, поэтому представление полностью покрывает их.Я реализовал код, чтобы покрыть их, но он возвращает ошибку.

ниже мой код

class SliderView: CustomView {

    @IBOutlet weak var containerView: UIView!
    @IBOutlet weak var sliderImage: UIImageView!
    @IBOutlet weak var sliderText: UILabel!

    override func initialize() {
        super.initialize()

        let name = String(describing: type(of: self))
        let nib = UINib(nibName: name, bundle: .main)
        nib.instantiate(withOwner: self, options: nil)

        self.addSubview(self.containerView)
        self.containerView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            self.containerView.topAnchor.constraint(equalTo: self.topAnchor),
            self.containerView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
            self.containerView.trailingAnchor.constraint(equalTo: self.trailingAnchor),
            ])
    }

    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return sliderImage.frame.contains(point)
    }

    override var prefersStatusBarHidden: Bool {
        return true
    }

  // THIS THROWS an error 'Property does not override any property from its superclass'
}

мой UIView вызывается в моем Viewcontroller как

 weak var sliderView: SliderView!

    override func loadView() {
        super.loadView()

        let sliderView = SliderView()
        self.view.addSubview(sliderView)
        NSLayoutConstraint.activate([
            sliderView.topAnchor.constraint(equalTo: self.view.topAnchor),
            sliderView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
            sliderView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            sliderView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
            ])
        self.sliderView = sliderView
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        sliderView.sliderText.text = "HOOOOO WORKS"
}

1 Ответ

0 голосов
/ 25 февраля 2019
NSLayoutConstraint.activate([
            sliderView.topAnchor.constraint(equalTo: self.view.topAnchor),
            sliderView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
            sliderView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
            sliderView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
            ])

Ваш пользовательский вид охватывает все UIViewController.Поэтому невозможно взаимодействовать с UIViewController.

Просто попробуйте заменить второе ограничение следующим, чтобы покрыть только половину высоты экрана:

sliderView.topAnchor.constraint.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -UIScreen.main.bounds.height*0.5)

Это всего лишь предложение увидеть разницу, т. Е. Не решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...