2012-05-15 3 views
0

Я хотел бы иметь UITextField с градиентным фоном, чтобы сделать один из вариантов моего проекта немного более визуально привлекательным.iOS UITextField с фоном gradien

Я пытаюсь подкласс класса UITextField переопределять initWithFrame, но он не работает. Я никогда не пытался подклассифицировать UIControl раньше, поэтому, наверное, я что-то упустил.

Может ли кто-нибудь дать мне руку? Заранее спасибо!

ответ

0

Вы можете попробовать этот ответ: iPhone UITextField background color

и добавьте градиент с CAGradientLayer

+0

Кажется, что это было легче, чем я думал. Я делал все, но проблема указана в ссылке, которую вы приложили. При подклассификации UITextField, textField не должен быть с закругленными углами. Итак, наконец, я подклассифицировал UITextField, добавил градиент в initWithFrame и установил тип как безграничный. Все работает очень хорошо. Дело также в том, что я искал программные решения без использования изображения (jpg, png или другого) для градиента. Таким образом, изменение размера не является проблемой. Большое спасибо всем вам. – Marcal

0

UITextField имеет свойство background, которое имеет тип UIImage. Таким образом, вы можете либо нарисовать UIImage во время выполнения, либо загрузить готовый образ и установить его как фон вашего UITextField. Таким образом, вы можете добиться того, что вам нравится в текстовом поле.

1

Это должно работать:

textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"gradient.jpg"]]; 

Но вам придется изменить управление на TextView.

0

вы просто рядом с ним подклассов является лучшей идеей для него, но вместо того, чтобы переопределение initWithFrame просто использовать как ниже код в ваш подклассы .m файл

- (CGRect)textRectForBounds:(CGRect)bounds 
{ 
    return CGRectInset(bounds, 5, 0); 
} 

- (CGRect)editingRectForBounds:(CGRect)bounds 
{ 
    return CGRectInset(bounds, 5, 0); 
} 

- (void)drawRect:(CGRect)rect 
{ 
    UIImage *textFieldBackground = [[UIImage imageNamed:@"text_field_teal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15.0, 5.0, 15.0, 5.0)]; 
    [textFieldBackground drawInRect:[self bounds]]; 
} 

, как это работает для меня, я думаю, что это будет работает для вас Днем Coding :) Наслаждайтесь день !!

Смежные вопросы