Выровнять по вертикали UIImageView, добавленный как правый вид текстового поля с текстом небесного плавания. - PullRequest
0 голосов
/ 18 мая 2018

Я добавил checkmarkImageView как вид справа skyfloatinglabeltextfield следующим образом:

let checkmark = UIImage(named: "checkmark") 
checkmarkImageView = UIImageView(image: checkmark)
checkmarkImageView?.frame = CGRect(x: 0.0, y: 0.0, width: 20.0, height: 20.0)
textfield?.rightView = checkmarkImageView
textfield?.rightViewMode = .always
editView.addSubview(textfield!)

Он не выравнивает центр по вертикали с текстом текстового поля.Как мне этого добиться?It is not aligning vertically centre with the text of the textfield.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

изменить frame.offsetBy, я использовал текстовое поле Border Style как Plain

    let rightVie = UIView()
    rightVie.backgroundColor = UIColor.clear

   checkmarkImageView = UIImageView(image: UIImage(named: "checkmark")) // use your imageView
  //  checkmarkImageView?.frame = CGRect(x: 0.0, y: 0.0, width: 20.0, height: 20.0)
   checkmarkImageView.frame = checkmarkImageView.frame.offsetBy(dx: 0, dy: -1 + textfield.titleHeight()/2)
    rightVie.frame = checkmarkImageView.frame
    rightVie.addSubview(checkmarkImageView)
    //use your textfield name
    textfield?.rightView = rightVie
    textfield?.rightViewMode = .always

вывод

enter image description here

0 голосов
/ 18 мая 2018

Попробуйте изменить кадр checkmarkImageView на:

checkmarkImageView?.frame = CGRect(x: 0.0, y: 0.0, width: 20.0, height: textfield.bounds.height)

И, пожалуйста, добавьте скриншот кадров, которые вы получаете из отладчика пользовательского интерфейса.

Редактировать:

checkmarkImageView?.contentMode = .scaleAspectFit

Edit-2:

Чтобы получить высоту текста, используйте:

let textHeight = text.size(withAttributes: [NSAttributedStringKey.font: UIFont.openSansBold(size: 10)]).height

Добавьте атрибуты согласно вашему требованию.

Дайте мне знать, если у вас все еще есть какие-либо проблемы.

...