我使用以下代码以编程方式创建了一个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。
以前有人见过这个吗?怎么办?
答案 0 :(得分:3)
这似乎就是在屏幕上绘制文本字段的方式。我稍微使用了你的代码,如果我将文本字段的高度设置为低于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