Как добавить изображение UIImage с отступом в UITextField в iOS 7?

У меня есть UITextField, в котором я хочу добавить изображение с левой стороны. Я делаю это, используя UIImageView, который установлен в leftView свойство UITextField. Изображение изменено в Image View до нужного размера. Проблема в том, что она придерживается границы. Как установить левый отступ изображения. Я полагаю, что одним из решений является установка пробела в левой части изображения, но я хочу использовать отступ. Также я хочу, чтобы после изображения был отступ, поэтому текст не так близок к нему.

Я использую следующий код:

[textField setLeftViewMode:UITextFieldViewModeAlways];

UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 37, 20)];
imageView1.image = [UIImage imageNamed:@"custom_image"];
textField.leftView = imageView1;

Ответ 1

Вам нужен подкласс UITextField и реализовать в нем

- (CGRect)leftViewRectForBounds:(CGRect)bounds

Ответ 2

Вы можете установить кадр UIImageview больше, чем оригинальный UIImage, и установить свойство UIImageview contentMode в центр.  См. Ниже ответ.

UIImageView *imgSearch=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 28)]; // Set frame as per space required around icon
[imgSearch setImage:[UIImage imageNamed:@"search.png"]];

[imgSearch setContentMode:UIViewContentModeCenter];// Set content mode centre

self.tfSearch.leftView=imgSearch;
self.tfSearch.leftViewMode=UITextFieldViewModeAlways;

Ответ 3

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

- (CGRect)leftViewRectForBounds:(CGRect)bounds;
- (void)drawTextInRect:(CGRect)rect;

Они изменят прямоугольник для leftView.