2017-02-19 40 views
0

Ниже приведено изображение некоторых UITextFields. Что касается большого в нижней части, как мне заставить его начинать текст в левом верхнем углу (а не в середине), и как я могу заставить их все начать немного вправо. Как вы можете видеть, они неловко близки к левому краю.Изменение макета текста в UITextField


enter image description here

+0

ли левый отступы. А для текстового просмотра вы должны использовать левую вставку. –

ответ

1

Вы можете sublcass к пользовательскому TextField:

import UIKit 

class CustomTextField: UITextField { 

    var inset:CGFloat = 12 // You can set the inset you want 

    override func textRect(forBounds bounds: CGRect) -> CGRect { 

     return bounds.insetBy(dx: inset, dy: 0) 
    } 

    override func editingRect(forBounds bounds: CGRect) -> CGRect { 

     return bounds.insetBy(dx: inset, dy: 0) 
    } 

} 

В результате, вы можете увидеть вставку из CustomTextField:


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

enter image description here

+0

@Gabe Spound, вы можете искать методы делегата. – aircraft

1

Для TextField, переопределить следующие методы:

class InsetTextField: UITextField { 

    var inset: CGFloat = 10 

    override func textRect(forBounds bounds: CGRect) -> CGRect { 
     return bounds.insetBy(dx: inset, dy: 0) 
    } 

    override func editingRect(forBounds bounds: CGRect) -> CGRect { 
     return bounds.insetBy(dx: inset, dy: 0) 
    } 

    override func placeholderRect(forBounds bounds: CGRect) -> CGRect { 
     return bounds.insetBy(dx: inset, dy: 0) 
    } 

} 

Для TextView:

textView.contentInset = UIEdgeInsetsMake(inset, inset, inset, inset); 

И вы можете быть вовлечены, когда TextView закончит редактирование, проверьте this question.

+0

Вы могли бы предоставить немного более подробную информацию? Я делаю расширение для этих классов? –

+0

@GabeSpound проверить мое новое редактирование. – AlvinZhu

1

По умолчанию UITextFields имеет только одну строку. Исходя из вашего изображения, я предполагаю, что вы хотите, чтобы у пользователя было место для ввода абзаца. Для абзацев лучше использовать UITextViews. Это будет более простое решение вашей проблемы.

Я всегда использую TextViews для биографий, потому что это просто упрощает мою жизнь.

+0

Я не могу использовать текстовое представление, потому что мне нужно иметь возможность создавать Actions, когда они закончены, и у них нет этой опции. –

1

добавить оставил обивка вашего текстового поля

let paddingVie = UIView(frame: CGRect(x: 0, y:0, width: 10, height: 10)) 
yourtextField.leftView = paddingVie 
yourtextField.leftViewMode = .always 

для TextView добавить

yourTextVieName.textContainerInset = 
    UIEdgeInsetsMake(8,5,8,5); // top, left, bottom, right 

 Смежные вопросы

  • Нет связанных вопросов^_^