我正在尝试使用自定义文本字段背景。问题在于该文本在左侧似乎太靠近了。

如果没有子类化UITextField,我看不到任何移动文本的方法。所以我正在尝试扩展和覆盖

- (void)drawTextInRect:(CGRect)rect{
    NSLog(@"draw rect");
    CGRect newRect = CGRectMake(rect.origin.x+20,rect.origin.y,rect.size.width-20,rect.size.height);
    [super drawTextInRect:newRect];
}

但是由于某种原因,日志永远不会打印。我知道正在使用子类,因为我在init中也有一个日志,并且可以正常打印。

挥舞着

编辑。

我也尝试
- (CGRect)textRectForBounds:(CGRect)bounds{
    NSLog(@"bounds");
    CGRect b = [super textRectForBounds:bounds];
    b.origin.x += 20;
    return b;
}

这实际上可以追溯,但似乎并没有改变

最佳答案

我认为您可以为此使用leftView属性。

您可以将leftViewrightView添加到UITextfield。这些 View 可用于显示图标,但是如果它是空 View ,则仅会占用空间,这就是您想要的。

CGFloat leftInset = 5.0f;
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, leftInset, self.bounds.size.height)];
self.leftView = leftView;
self.leftViewMode = UITextFieldViewModeAlways;
[leftView release];

10-07 13:52