2013-02-19 14 views
0

我有一個UITextField的子類,我試圖添加一個不透明的子視圖給它。但是,當我輸入UITextField時,它顯示爲透明,我可以看到視圖後面的文本。我如何使視圖完全不透明?這是在子類中的代碼,並添加了視圖。添加不透明的子視圖到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子視圖和不透明的視圖。 – 2013-02-19 15:43:57

+0

沒有嘗試,但'setBackgroundColor'或'setBackground'呢? – Larme 2013-02-19 15:49:31

回答

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 2013-02-19 15:53:11