#ios #swift
#iOS #swift
Вопрос:
Я создал UIButton, который я хочу добавить непосредственно в начало другого UIButton, который был создан в storyboard. Я добавил созданный программно, но это приводит к сбою приложения.
var routeButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(routeButton)
setupRouteBtn()
}
fileprivate func setupRouteBtn() {
routeButton = UIButton(type: .custom)
routeButton.backgroundColor = UIColor.flatBlack()
routeButton.translatesAutoresizingMaskIntoConstraints = false
routeButton.widthAnchor.constraint(equalToConstant: 40).isActive = true
routeButton.heightAnchor.constraint(equalToConstant: 40).isActive = true
// routeBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 10).isActive = true
// routeBtn.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -10).isActive = true
routeButton.trailingAnchor.constraint(equalTo: fab.trailingAnchor).isActive = true
routeButton.leadingAnchor.constraint(equalTo: fab.leadingAnchor).isActive = true
routeButton.bottomAnchor.constraint(equalTo: fab.topAnchor).isActive = true
routeButton.setNeedsLayout()
routeButton.layoutIfNeeded()
routeButton.layer.cornerRadius = 0.5 * routeButton.bounds.size.width
routeButton.setImage(UIImage(named:"Group-3.png"), for: .normal)
routeButton.imageView?.contentMode = .scaleAspectFit
routeButton.clipsToBounds = true
}
Ответ №1:
Ваша routeButton
переменная появляется nil
, когда вы добавляете ее в качестве subview. Вам нужно назначить его, прежде чем добавлять в качестве subview
var routeButton = UIButton(type: .custom)
… тогда не назначайте его в setupRouteBtn
routeButton = UIButton(type: .custom)
var routeButton = UIButton(type: .custom)
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(routeButton)
setupRouteBtn()
}
fileprivate func setupRouteBtn() {
routeButton.backgroundColor = .flatBlack()
...
}