Я пытаюсь создать UISwitch программно, но по какой-то причине я не могу заставить работать какие-либо ограничения. Если я не использую никаких ограничений, UISwitch создается, но в верхнем левом углу.
Я попытался создать UISwitch, добавив ограничения при объявлении моего переключателя, и это перемещает переключатель в другое место. Однако это проблема, поскольку я хочу, чтобы она была ограничена другими элементами на мой взгляд.
class cameraController: UIViewController {
var switchOnOff: UISwitch {
let switchOnOff = UISwitch()
switchOnOff.isOn = false
switchOnOff.translatesAutoresizingMaskIntoConstraints = false
switchOnOff.addTarget(self, action: #selector(switchButton(_:)), for: .valueChanged)
return switchOnOff
}
}
extension cameraController{
@objc func switchButton(_ sender:UISwitch){
if (sender.isOn == true){
print("UISwitch state is now ON")
}
else{
print("UISwitch state is now Off")
}
}
}
extension cameraController {
private func setupLayouts() {
view.addSubview(switchOnOff)
switchOnOff.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true
switchOnOff.topAnchor.constraint(equalTo: photosButtonIcon.bottomAnchor, constant: 20).isActive = true
}
}
Я хочу иметь возможность добавлять свои ограничения для коммутатора в мое расширение setupLayouts, а не при объявлении коммутатора.
Я получаю ошибку при запуске приведенного выше кода:
Тема 1: EXC_BAD_ACCESS (код = EXC_I386_GPFLT)
Я получаю эту ошибку в первой строке ограничений в моем расширении setupLayouts.
Любая помощь будет отличной.