Я не знаю, является ли создание каждого объекта translatedAutoresizingMaskIntoConstraints flag false ложной привычкой, но вот мой вопрос, связанный с этим;У меня есть объект UITextField, и я устанавливаю его rightView как UIImageView, но когда свойство translinesAutoresizingMaskIntoConstraints UIImageView устанавливает значение false в иерархии представления отладки, появляется неоднозначное предупреждение о разметке, документация apple гласит в разделе translatesAutoresizingMaskIntoConstraints:
Если вы хотите использоватьАвтоматическая разметка для динамического расчета размера и> положения вашего представления, вы должны установить для этого свойства значение false, а затем> предоставить не двусмысленный, не конфликтующий набор ограничений для представления.
но естьметод UITextField
open func rightViewRect(forBounds bounds: CGRect) -> CGRect
, который
Возвращает расположение чертежа для правого наложения получателя.
Дополнительно, когда я пытаюсь задать ограничениямежду rightView и UITextField, он говорит, что они не находятся в одной иерархии.Так почему принятие этого флага как ложного вызывает неоднозначное расположение?
let imageView = UIImageView(image: UIImage(named: "infoIcon"))
imageView.contentMode = .scaleAspectFit
imageView.translatesAutoresizingMaskIntoConstraints = false //this line causes ambiguous layout
imageView.widthAnchor.constraint(equalToConstant: 15).isActive = true
textField.rightViewMode = .unlessEditing
textField.rightView = imageView