2013-02-19 3 views
0

У меня есть подкласс UITextField, и я пытаюсь добавить непрозрачный подзаголовок. Однако, когда я печатаю в UITextField, он выглядит прозрачным, и я вижу текст за ним. Как я могу сделать представление полностью непрозрачным? Вот код, который вводит подкласс и добавляет представление.Добавить opaque subview в UITextField

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     _dropdownIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ab- dropdown-on"]];  
     dropdownIcon.backgroundColor = [UIColor blackColor]; 
     _dropdownIcon.frame = CGRectMake(self.frame.size.width-DROPDOWN_ICON_SIZE,0,DROPDOWN_ICON_SIZE,DROPDOWN_ICON_SIZE); 
     [self addSubview:_dropdownIcon]; 
    } 
    return self; 
} 

This is what I get

+0

Когда вы начинаете вводить текст, я считаю, что поле текстового редактора размещено над ним - я бы вместо этого наложил вид на супервизор - или создаю класс MyTextfield с подсмотром UITextField и непрозрачным представлением. –

+0

Не пробовал, но как насчет 'setBackgroundColor' или' setBackground'? – Larme

ответ

2

Ваш подкласс должен переопределить метод -textRectForBounds: вернуть фактическую область, которую вы хотите текст, чтобы привлечь, например,

- (CGRect)textRectForBounds:(CGRect)bounds 
{ 
    CGRect textRect = [super textRectForBounds:bounds]; 
    textRect.size.width -= 30; // or however wide your control is—play with this value 
    return textRect; 
} 

То, что вы видите, это не икона является непрозрачной, текст просто втягивается над ним, потому что текстовое поле «не знает» икона есть.

Вы также можете изучить свойство rightView и связанный с ним метод -rightViewRectForBounds:, хотя это в основном полезно, если вы хотите, чтобы текстовое поле автоматически отображало и скрывало ваш вид аксессуаров.

+0

Это трюк. Большое спасибо за ваш быстрый ответ. – NickDK

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