0

我有一个子类,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;
}

这就是我得到的

4

1 回答 1

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:方法,尽管如果您希望文本字段自动显示和隐藏附件视图,这些方法最有用。

于 2013-02-19T15:49:36.540 回答