Так что проверьте это.Внутри вашего метода
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-я кнопка ниже на рисунке.