2015-09-11 4 views
5

Я создание UIImageView как leftView на UITextField так:Как получить левое заполнение на изображении UITextField leftView?

UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.height*.1, self.height*.1)]; 
envelopeView.image = [UIImage imageNamed:@"envelope.png"]; 
envelopeView.contentMode = UIViewContentModeScaleAspectFit; 
envelopeView.bounds = CGRectInset(envelopeView.frame, 15, 10); 
self.emailAddress.leftView = envelopeView; 
self.emailAddress.leftViewMode = UITextFieldViewModeAlways; 

который получает мне следующее:

UITextField image

Как вы можете видеть левый размер изображения идет вплоть до левого края кнопки, хотя я пытался установить вставку. Как я могу переместить этот конверт так, чтобы у него было дополнение со всех сторон?


Обновление: Я попробовал предложенный ответ изменения UIImageView кадр, как это так, но конверт еще выстроены на левой стороне на границе UITextField:

CGFloat padding = 20; 
UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(3*padding, padding, self.height*.1-padding, self.height*.1-padding)]; 
+1

сделал вы пытаетесь изменить CGRectMake (5, 0, self.height * 0,1, self.height * 0,1)], например ... – Monicka

ответ

2

enter image description here вы можете просто попробуйте это:

UIImageView *envelopeView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 0, 30, 30)]; 
    envelopeView.image = [UIImage imageNamed:@"comment-128.png"]; 
    envelopeView.contentMode = UIViewContentModeScaleAspectFit; 
    UIView *test= [[UIView alloc]initWithFrame:CGRectMake(20, 0, 30, 30)]; 
    [test addSubview:envelopeView]; 
    [self.textField.leftView setFrame:envelopeView.frame]; 
    self.textField.leftView =test; 
     self.textField.leftViewMode = UITextFieldViewModeAlways; 
+1

просто попытался это, но он не проявляет никакого эффекта. Изображение примерно одинаковое. – helloB

+1

сколько вы дали за x? –

+1

x не может быть CGFloat .. это как на оси x, должно быть некоторое целое число. – Monicka

5

Для Swift 3 пользователей

Вот что работает для меня:

extension UITextField { 

/// set icon of 20x20 with left padding of 8px 
func setLeftIcon(_ icon: UIImage) { 

    let padding = 8 
    let size = 20 

    let outerView = UIView(frame: CGRect(x: 0, y: 0, width: size+padding, height: size)) 
    let iconView = UIImageView(frame: CGRect(x: padding, y: 0, width: size, height: size)) 
    iconView.image = icon 
    outerView.addSubview(iconView) 

    leftView = outerView 
    leftViewMode = .always 
    } 
} 

тест:

txOrigin.setLeftIcon(icon_location) 

результат:

enter image description here

0

Вы можете использовать это. Измените кадр в соответствии с вашими потребностями.

NSTextAttachment* placeholderImageTextAttachment = [[NSTextAttachment alloc] init]; 
placeholderImageTextAttachment.image = [UIImage imageNamed:@"Search"]; 
placeholderImageTextAttachment.bounds = CGRectMake(0, -2, 16, 16); 
NSMutableAttributedString* placeholderImageString = [[NSAttributedString attributedStringWithAttachment:placeholderImageTextAttachment] mutableCopy]; 
NSMutableAttributedString* placeholderString = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@" Search", nil)]; 
[placeholderImageString appendAttributedString:placeholderString]; 
_txtFieldSearch.attributedPlaceholder = placeholderImageString; 
_txtFieldSearch.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
Смежные вопросы