почему у моей иконки другое поведение в ios13 - PullRequest
2 голосов
/ 10 октября 2019

Я давно не работал над проектом ios. Во всяком случае, у меня есть значок, который ведет себя по-разному на ios13.

, когда я изменяю значения, это похоже на устройства под управлением ios 12 и ниже, но не 13 see image

let showImage : UIImage = UIImage(named: "show-512")!
showHideButton.setImage(showImage, for: UIControlState())
showHideButton.frame = CGRect(x: -10.0, y: 0.0, width: 30.1, height: 22.2)

1 Ответ

3 голосов
/ 11 октября 2019

Это неопределенное поведение 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...