我有一个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;
}
答案 0 :(得分: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:方法,但如果您希望文本字段自动显示和隐藏附件视图,则这些方法非常有用。