在Edges的UITextField黑色像素

时间:2011-03-09 17:20:50

标签: iphone ios 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最终在边缘有这些奇怪的黑色像素。这在设备和模拟器中都会发生。您可以在下面的屏幕截图中看到:

当我使用IB创建相同的UITextField时,具有相同的规格和背景,我没有问题。不幸的是,我需要以编程方式创建这个UITextField。

以前有人见过这个吗?怎么办?

You can see the black pixels at the edge of the UITextField here, right in the middle of the left edge.

1 个答案:

答案 0 :(得分:3)

这似乎就是在屏幕上绘制文本字段的方式。我稍微使用了你的代码,如果我将文本字段的高度设置为低于20左右,你就会开始看到明显无法正确绘制的明显“阴影”。

我的建议是在文本字段中使用20或更高的高度,或者使用不同的样式,例如挡板或线条,并将背景设置为白色。

这是一个演示截图: enter image description here

以下是我用来绘制这些代码的代码:

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