Это неопределенное поведение iOS 13 относительно представления textField влево / вправо.
Вы должны вручную добавить width constraint
к rightView
/ leftView
.
Не забудьте установить translatesAutoresizingMaskIntoConstraints = false
showHideButton.translatesAutoresizingMaskIntoConstraints = false
showHideButton.widthAnchor.constraint(equalToConstant: <#NeededWidth#>).isActive = true
// This is enough to make it act like before but you can set other missing constraints like height to suppress layout warnings and prevent further issues.
// showHideButton.widthAnchor.constraint(equalToConstant: <#HeightOfTheTextField#>).isActive = true
Вы можете заметить некоторые предупреждения автоматического размещения в потребителе, потому что вы не установили отсутствующее ограничение для rightView
/ leftView
. Поэтому добавьте отсутствующие ограничения или просто игнорируйте их.
И обратите внимание, что если rightView
/ leftView
- это что-то вроде StackView
, попробуйте поместить его в view
, а затем добавьте это представление вместо.
- Дополнительная информация
Из примечаний к выпуску бета-версии 5 для разработчиков для iOS и iPadOS :
UIKit - Решенные проблемы
До iOS 13 UITextField предполагал, что кадры его leftView и rightView были правильно установлены при назначении и никогда не изменятся. Начиная с iOS 13, реализация leftViewRect (forBounds :) и rightViewRect (forBounds :) теперь запрашивает представление для его systemLayoutSizeFitting ( :). Чтобы добиться предыдущего поведения при связывании и запуске в iOS 13, добавьте явные ограничения размеров для представления, оберните его в простой UIView или создайте подкласс представления и реализуйте systemLayoutSizeFitting ( :). (51787798)