重置UITextField左边距

时间:2011-04-18 07:10:48

标签: iphone ipad

我希望将UITextField.text的左边距对齐到10Px。请建议我最好的方法?在roundedRect TesxtField中相同,其中文本从左开始10 px

几乎已经达到覆盖 - (CGRect)textRectForBounds:(CGRect)bounds.现在问题是当TextField进入编辑模式时,他们的左边距重置为零.......

@implementation UITextField(UITextFieldCatagory)

- (CGRect)textRectForBounds:(CGRect)bounds {
    CGRect theRect=CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-10, bounds.size.height);
    return theRect;
}

4 个答案:

答案 0 :(得分:4)

您可以尝试使用UITextField的实例方法drawTextInRect:吗?

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

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

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];

参考问题UITextField custom background view and shifting text

答案 1 :(得分:3)

你试过吗

-(CGRect)editingRectForBounds(CGRect)bounds;

答案 2 :(得分:2)

覆盖超级实现,并调整结果。这样您就不需要使用leftView和rightView进行计算(如果使用它们)。

- (CGRect)textRectForBounds:(CGRect)bounds {
    CGRect ret = [super textRectForBounds:bounds];
    ret.origin.x = ret.origin.x + 10;
    ret.size.width = ret.size.width - 20;
    return ret;
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    return [self textRectForBounds:bounds];
}

答案 3 :(得分:0)

迅速:

    let leftView:UIView = UIView(frame: CGRectMake(0, 0, 30, 1))
    leftView.backgroundColor = UIColor.clearColor()
    my_text_field.leftView = leftView;
    my_text_field.leftViewMode = UITextFieldViewMode.Always;