Свойства, назначенные UIButton в ViewController.swift, и segue работает на симуляторе, но не на устройстве - PullRequest
0 голосов
/ 09 июля 2019

У меня чрезвычайно странная проблема. Я создал UIButton и поместил его в свою раскадровку ViewController. Я добавил переход от Button к другому ViewController, нажав control и перетащив его. Я также добавил выход в соответствующий файл ViewController и добавил цвет и ширину границы (к кнопке). Сегмент и граница кнопки работают нормально на симуляторе, но на устройстве граница кнопки не отображается и переход не работает.

Единственное, о чем я могу думать, это может вызвать проблему, это то, что некоторое время назад я случайно удалил свою Main.storyboard, поэтому я перетащил ее из корзины обратно в свой проект Xcode. Но я уверен, что мое приложение работало на устройстве даже после этого инцидента. Я не был уверен, что мой метод viewDidLoad был запущен (так как именно здесь я установил цвет и ширину моей границы для кнопки), поэтому я добавил оператор print и обнаружил, что он действительно вызывается. Посмотрите на код ниже ...

     override func viewDidLoad() {
        super.viewDidLoad()
        print("Begin Setup Process...")
        // Do any additional setup after loading the view.
        calibrateButton.layer.borderColor = UIColor.white.cgColor
        calibrateButton.layer.borderWidth = 3
    }

Как заставить это работать и на моем устройстве? Что я делаю не так

Ответы [ 4 ]

0 голосов
/ 12 июля 2019

Я наконец решил проблему. Проблема была в том, что у меня не было ограничения по высоте на моей кнопке. Я до сих пор не совсем уверен, почему или как возникла эта проблема. Почему я не вижу текст кнопки, а не границы? Если переход не работал, вид сверху кнопки должен был препятствовать ее срабатыванию. Но в любом случае добавление ограничения высоты решило проблему. Отвечая на мой собственный вопрос, я понимаю, что название моего вопроса вводит в заблуждение относительно решения проблемы. Эта проблема, в конце концов, не имела ничего общего с тем, работало ли приложение на симуляторе или устройстве. Я просто предположил, что это проблема устройства, так как он работал нормально на моем симуляторе iPhone XR, но не на моем настоящем iPhone 6s. Однако настоящей проблемой был размер экрана и то, как мои ограничения адаптировались к нему.

0 голосов
/ 09 июля 2019

Попробуйте добавить код, чтобы изменить layer свойства calibrateButton в viewDidLayoutSubviews(), то есть

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    calibrateButton.layer.borderColor = UIColor.white.cgColor
    calibrateButton.layer.borderWidth = 3
}

Кроме того, поскольку вы задаете borderColor как white, это может небыть видимым, если calibrateButton расположен на белом фоне .Попробуйте изменить его на что-нибудь более видимое, например red.

0 голосов
/ 09 июля 2019

Сначала попробуйте в viewDidAppear(), если это работает, затем обрежьте и вставьте его в viewDidLayoutSubviews().

0 голосов
/ 09 июля 2019

Назначьте свой стиль рамки здесь ...

enter image description here

...