#swift #extension-methods #addsubview
#swift #расширение-методы #addsubview
Вопрос:
Пытаюсь создать UIButton, который при длительном нажатии открывает четыре подвида (кнопки UIButtons — север, восток, юг и запад), к которым пользователь может затем перемещать палец и поднимать для 4 отдельных действий.
extension UIButton {
func EnablePopOuts (North:Bool = true, nTitle:String, nColor:UIColor = .black, nAction: Selector) {
if North {
let northButton = UIButton(frame: self.frame)
northButton.translatesAutoresizingMaskIntoConstraints = false
let nA = NSLayoutConstraint(item: northButton, attribute: .height
, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: 0)
let nB = NSLayoutConstraint(item: northButton, attribute: .width
, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 1, constant: 0)
let nC = NSLayoutConstraint(item: northButton, attribute: .bottom
, relatedBy: .equal, toItem: self, attribute: . top, multiplier: 1, constant: 0)
let nD = NSLayoutConstraint(item: northButton, attribute: .leading
, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1, constant: 0)
self.addSubview(northButton)
self.didAddSubview(northButton)
self.addConstraints([nA,nB,nC,nD])
self.bringSubviewToFront(northButton)
northButton.setTitle(nTitle, for: .normal)
northButton.backgroundColor = nColor
northButton.addTarget(Main.self, action: nAction, for: .touchUpInside)
self.layoutIfNeeded()
self.layoutSubviews()
}
}
}
EnablePopOuts
запускается, но северная кнопка не отображается.
Комментарии:
1. Вы должны отладить иерархию представлений в xcode, чтобы выяснить, скрывается ли и где северная кнопка.
2. @AndreasOetjen я сделал и не нашел, где его найти
3. функции в Swift должны начинаться со строчных букв в соответствии с правилами регистра. . Что
addConstraints
делать?4. Спасибо за ссылку на соглашения о прецедентах. Я самоучка.
addContraints
применяет ограничения к целевому представлению … в противном случае вы создали только неактивные ограничения.