UITextField Черные пиксели по краям

Я создал UITextField программно со следующим кодом:

self._maxPriceField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, labelWidth, labelHeight)];
self._maxPriceField.borderStyle     = UITextBorderStyleRoundedRect;
self._maxPriceField.clearButtonMode = UITextFieldViewModeWhileEditing;
self._maxPriceField.font            = fieldFont;
self._maxPriceField.delegate        = self;

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

Когда я создаю тот же UITextField с использованием IB, с теми же характеристиками и фоном, у меня нет проблем. К сожалению, мне нужно создать этот UITextField программно.

Кто-нибудь видел это раньше? Что делать?

Здесь вы можете увидеть черные пиксели по краю UITextField, прямо посередине левого края.


person devinfoley    schedule 09.03.2011    source источник


Ответы (1)


Кажется, именно так на экране рисуются текстовые поля. Я немного поигрался с вашим кодом, и если я установлю высоту текстового поля ниже 20, вы начнете видеть заметную «тень», которая явно не отображается правильно.

Я предлагаю либо использовать высоту 20 или выше для текстового поля, либо использовать другой стиль, такой как рамка или линия, и установить белый фон.

Вот скриншот для демонстрации: введите описание изображения здесь

А вот код, который я использовал для их рисования:

int labelWidth = 100;
int labelHeight = 10;

_maxPriceField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, labelWidth, labelHeight)];
_maxPriceField.borderStyle     = UITextBorderStyleRoundedRect;
_maxPriceField.clearButtonMode = UITextFieldViewModeWhileEditing;

//_maxPriceField.font            = fieldFont;
//_maxPriceField.delegate        = self;
[self.view addSubview:_maxPriceField];

UITextField *secondField = [[UITextField alloc] initWithFrame:CGRectMake(10, 40, labelWidth, labelHeight + 10)];
secondField.borderStyle     = UITextBorderStyleRoundedRect;
[self.view addSubview:secondField];
[secondField release];

UITextField *thirdField = [[UITextField alloc] initWithFrame:CGRectMake(10, 70, labelWidth, labelHeight + 20)];
thirdField.borderStyle     = UITextBorderStyleRoundedRect;
[self.view addSubview:thirdField];
[thirdField release];

UITextField *fourthField = [[UITextField alloc] initWithFrame:CGRectMake(10, 110, labelWidth, labelHeight + 30)];
fourthField.borderStyle     = UITextBorderStyleRoundedRect;
[self.view addSubview:fourthField];
[fourthField release];

UITextField *noRoundFirst = [[UITextField alloc] initWithFrame:CGRectMake(10, 160, labelWidth, labelHeight)];
noRoundFirst.borderStyle = UITextBorderStyleBezel;
noRoundFirst.backgroundColor = [UIColor whiteColor];
[self.view addSubview:noRoundFirst];
[noRoundFirst release];

Надеюсь это поможет.

Mk

person Mirkules    schedule 09.03.2011