Swift: вид скрывает кнопку - PullRequest
0 голосов
/ 12 июня 2018

Итак, в раскадровке я поместил представление в мой viewcontroller.

это представление также имеет свой собственный цвет, определенный в моем коде:

 func setBlueGradientBackground(){
    let topColor = UIColor(red: 95.0/255.0, green: 165.0/255.0, blue: 1.0, alpha: 1.0).cgColor
    let bottomColor = UIColor(red: 72.0/255.0, green: 114.0/255.0, blue: 184.0/255.0, alpha: 1.0).cgColor
    smoke.frame = view.bounds
    smoke.colors = [topColor, bottomColor]

, и моя viewdidload выглядит такthis:

override func viewDidLoad() {
    super.viewDidLoad()


    setBlueGradientBackground()
    lava.layer.addSublayer(smoke)
}

Теперь я хотел добавить кнопку на мой вид.

Каким-то образом вид скрывает кнопку.

Если я уберу

setBlueGradientBackground() 

функция, это работает ..

Редактировать: кнопка в представлении, чей цвет меняется.

https://imgur.com/a/9okrll6

Как это исправить

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Так что проверьте это.Внутри вашего метода

func setBlueGradientBackground(){
    let topColor = UIColor(red: 95.0/255.0, green: 165.0/255.0, blue: 1.0, alpha: 1.0).cgColor
    let bottomColor = UIColor(red: 72.0/255.0, green: 114.0/255.0, blue: 184.0/255.0, alpha: 1.0).cgColor
    smoke.frame = view.bounds //HERE SEEMS TO BE CULPRIT
    smoke.colors = [topColor, bottomColor]
}

мы видим, что вы объявляете структуру дыма.Ну, похоже, что ваша переменная дыма (какого-то происхождения UIView) была добавлена ​​на экран где-то ПОСЛЕ вашей кнопки.Так что, может быть, что-то подобное произошло

var smoke:UILabel = UILabel()

func viewDidLoad() {
    var button = UIButton(frame: CGRect(x: self.view.frame.width*0.3, y: self.view.frame.height*0.3, width: self.view.frame.width*0.4, height: self.view.frame.height*0.4))
    self.view.addSubview(button) //ADDED BEFORE
    self.view.addSubview(smoke) //ADDED AFTER
}

Теперь причина, по которой setBlueGradientBackground исправит это, потому что вы установили smoke's frame внутри.Итак, если мы удалим setBlueGradientBackground, мы также не примем кадр дыма.Дым теперь НЕ НА ЭКРАНЕ, даже если он добавлен как вид;это не имеет границ.Поэтому, хотя кнопка добавлена ​​ПОСЛЕ вашей кнопки, она не может ничего блокировать, потому что у нее нет границ.

Вот быстрый маленький инструмент, чтобы увидеть, где находятся слои.Внутри XCode, когда вы запускаете программу, на инструменте отладчика у вас есть эти кнопки -> Точки останова, Пауза, Пропуск, Внутри, Что-то еще, и затем у вас есть строка, которая выглядит следующим образом |Затем у вас есть другая кнопка, которая выглядит как 2 прямоугольника, 1 ширина и 1 высота вместе, нажмите на нее, и она фактически приостановит вашу программу в заданном состоянии и покажет вам, где находятся слои.Это довольно изящно.Это 6-я кнопка ниже на рисунке.

0 голосов
/ 12 июня 2018

Возможно, кнопка находится позади вашего подпредставления?Вы пытались изменить порядок расположения объектов просмотра?

Эта публикация может быть полезной

...