Как добавить место в начале UITextField - программирование
Подтвердить что ты не робот

Как добавить место в начале UITextField

Я создаю приложение, содержащее несколько UITextField. В textField у меня есть граничный тип none и фоновое изображение. Он отображается нормально, но теперь мой текст запускается с границы, которая не выглядит хорошо, как это

enter image description here

Как я могу добавить пространство в начале текстового поля?

4b9b3361

Ответ 1

Попробуйте это

UILabel * leftView = [[UILabel alloc] initWithFrame:CGRectMake(10,0,7,26)];
leftView.backgroundColor = [UIColor clearColor];


textField.leftView = leftView;

textField.leftViewMode = UITextFieldViewModeAlways;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

Ответ 2

Вы должны подклассифицировать UITextField и переопределить функцию drawText.

проверить этот для справки ИЛИ Вы можете выполнить следующие действия:

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, height_of_textfiled)];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;

Ответ 3

Здесь @Kalpesh отвечает в Swift 3.x:

let leftView = UILabel(frame: CGRectMake(10, 0.0, 7, 26))
leftView.backgroundColor = .clearColor()

customField.leftView = leftView
customField.leftViewMode = .Always
customField.contentVerticalAlignment = .Center

Swift 4.x

let leftView = UILabel(frame: CGRect(x: 10, y: 0, width: 7, height: 26))
leftView.backgroundColor =.clear

customField.leftView = leftView
customField.leftViewMode = .always
customField.contentVerticalAlignment = .center

Ответ 4

Вы можете подклассифицировать UITextField и ovverride textRectForBounds и editRectForBounds. Например,

- (CGRect)textRectForBounds:(CGRect)bounds {
    return CGRectMake(bounds.origin.x + 10, bounds.origin.y + 5, bounds.size.width - 20, bounds.size.height - 10);
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    return CGRectMake(bounds.origin.x + 10, bounds.origin.y + 5, bounds.size.width - 20, bounds.size.height - 10);
}

Ответ 5

Цель c

Для заполнения только заполнителя этот код будет работать

usernameTF.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"    Your text"];

Для заполнения как заполнителя, так и текста UITextField этот ниже код будет работать

usernameTF.layer.sublayerTransform = CATransform3DMakeTranslation(40, 0, 30);

Swift 3.0

Для заполнения только заполнителя этот код будет работать

yourTextField.attributedPlaceholder = NSAttributedString(string: "    YourText")

Для заполнения как заполнителя, так и текста UITextField этот ниже код будет работать

usernameTF.layer.sublayerTransform = CATransform3DMakeTranslation(40, 0, 30)

Ответ 6

-(void)textField:(UITextField *) textField didBeginEditing
{
    if ([textField.text isEqualToString:@""] || textField.text == NULL)
    {
       textField.text = @" ";
    }
}

Ответ 7

Вы можете поместить фоновое изображение текстового поля в изображение, над представлением изображения поместите текстовое поле в пространство.