выровнять текст в uiTextField XX пикселей вправо (xcode) - PullRequest
1 голос
/ 03 марта 2012

У меня есть собственный фон для UITextField. Но первые 20 пикселей UITextField взяты дизайном. Текст должен начинаться на 30 пикселей слева. Я искал совсем немного, но не смог найти. Я видел такие вещи, как переопределение свойств, но действительно ли это необходимо для чего-то такого базового?

Ответы [ 2 ]

3 голосов
/ 03 марта 2012

Я видел два разных решения:

  • добавить пустое UIView как leftView свойство U ITextView
  • подкласс UITextField и переопределить методы textRectForBounds: editingRectForBounds: - просто вернуть рамку с наложенными вставками

ИМХО вторая более элегантная.

Пример: .h:

#import <UIKit/UIKit.h>

@interface BlackTextField : UITextField

@property (nonatomic, assign) CGFloat paddingRight, paddingTop, paddingLeft, paddingBottom;
@end

м:

#import "BlackTextField.h"
#import <QuartzCore/QuartzCore.h>

@implementation BlackTextField
@synthesize paddingTop, paddingBottom, paddingLeft, paddingRight;

- (id)initWithCoder:(NSCoder *)coder {
    self = [super initWithCoder:coder];
    if (self) {        
        self.paddingRight   = 10;
        self.paddingLeft    = 10;
        self.paddingTop     = 5;
        self.paddingBottom  = 5;        
    }
    return self;
}

- (CGRect)textRectForBounds:(CGRect)bounds 
{
    return CGRectMake(bounds.origin.x + self.paddingLeft, bounds.origin.y + self.paddingTop, bounds.size.width - self.paddingLeft - self.paddingRight, bounds.size.height - self.paddingTop - self.paddingBottom);
}

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

@end
0 голосов
/ 03 марта 2012

Самый простой способ сделать это - создать UIImageView и поставить на него UITextField.

проблема решена.

К вашему сведению: вы можете создать подкласс UITextField, но это будетбыть огромной и сложной работой.поскольку я не рекомендовал бы это как не стандартный вид и мог иметь много ловушек в настоящем и будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...