#ios #swift #uiview
#iOS #swift #uiview
Вопрос:
У меня есть swift playground, и я создал UIButton под названием ‘StartButton’.
У меня есть функция, которая настраивает параметры UIButton.
func setupStartButton() {
startButton.frame = CGRect(x: 15, y: 550, width: 125, height: 50)
startButton.backgroundColor = UIColor(ciColor: CIColor(red: 255/255, green: 0/255, blue: 77/255, alpha: 1.0))
startButton.layer.cornerRadius = 20
startButton.setTitle("Start", for: .normal)
startButton.setTitleColor(.white, for: .normal)
startButton.addTarget(self, action: #selector(startButtonPressed), for: .touchUpInside)
view.addSubview(startButton)
}
Я вызываю это в viewDidLoad
override func viewDidLoad() {
let view = UIView(frame: CGRect(x: 0, y: 0, width: 524, height: 766))
view.backgroundColor = .white
setupStartButton()
PlaygroundPage.current.liveView = view
PlaygroundPage.current.needsIndefiniteExecution = true
}
Когда я запускаю игровую площадку, она не показывает кнопку.
Как мне показать кнопку.
Спасибо
Комментарии:
1. В принципе, игровая площадка — неподходящее место для этого. Используйте реальный проект приложения.
2. Я создаю проект для стипендиальной программы WWDC, которая, к сожалению, должна быть в playgrounds.
3. кстати, нет необходимости создавать
CIColor
просто для того, чтобы создатьUIColor
из него. Вы можете создаватьUIColor
напрямую.
Ответ №1:
Вы устанавливаете PlaygroundPage.current.liveView
значение локального, view
созданного в viewDidLoad
. Это не тот вид контроллера представления, к которому вы добавляете кнопку в setupStartButton
.
Я бы удалил строку, let view = UIView(frame: CGRect(x: 0, y: 0, width: 524, height: 766))
тогда каждая ссылка на view
будет представлением контроллера представления.
Вам следует удалить код playground из viewDidLoad
метода. После класса view controller вы можете создать экземпляр view controller и настроить игровую площадку:
Что-то вроде:
class MyViewController: UIViewController {
// your code
}
PlaygroundPage.current.liveView = MyViewController()