Я не думаю, что if statement
работает только один раз (вы можете поместить оператор печати в каждый блок для подтверждения).Я думаю, что проблема в том, что у вас есть два набора ограничений, которые активны одновременно.Что вы, вероятно, хотите сделать, это чередовать эти два набора;установка одного из них, чтобы быть активным, в то время как другой, чтобы быть неактивным.Попробуйте что-то вроде этого
enum Size {
case big
case small
}
var counter = 0
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(FIRE)
changeSizeTo(.small)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleRegisterC))
FIRE.addGestureRecognizer(tap)
FIRE.isUserInteractionEnabled = true
}
private func changeSizeTo(_ size: Size) {
FIRE.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = size == .small
FIRE.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = size == .small
FIRE.widthAnchor.constraint(equalToConstant: 400).isActive = size == .small
FIRE.heightAnchor.constraint(equalToConstant: 700).isActive = size == .small
FIRE.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = size == .big
FIRE.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = size == .big
FIRE.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0).isActive = size == .big
FIRE.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0).isActive = size == .big
FIRE.translatesAutoresizingMaskIntoConstraints = false
}
@objc func handleRegisterC(sender: UIButton){
counter += 1
changeSizeTo(counter % 2 == 0 ? .small : .big)
}