UITextField水平文本对齐 - 文本未居中

时间:2014-06-12 12:21:52

标签: ios objective-c uitextfield

我有一个非常奇怪的错误,试图在iOS 7+应用中的UITextField对象中水平居中文本。

我已经建立了一个新项目来隔离错误,并确保我没有做错事。

viewDidAppear:方法中,我分配/初始化一个新的UITextField实例,如下所示:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 200.0f)];
tf.backgroundColor = [UIColor orangeColor];
tf.textAlignment = NSTextAlignmentCenter;

[self.view addSubview:tf];

这就是全部。当我在 iPhone Retina(4英寸64位)模拟器上运行此示例应用程序时,我得到以下结果:

enter image description here

输入一些字母后我得到了这个:

enter image description here

有谁知道发生了什么事?键入时文本应居中。 直到现在我才遇到这个bug。它与iOS有关,还是我做错了什么?

P.s。:它也发生在iDevices上。

提前致谢。

修改

添加:

tf.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

也无济于事。

编辑2

喜欢 Inder Kumar Rathore 建议我尝试将身高设置为20.0f,如下所示:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 20.0f)];

令人惊讶地工作。但它并没有解决问题。我发现从20.0f增加高度会使问题变得更糟。我认为它与行高 / 文本字段高度比率有关。我不知道..

1 个答案:

答案 0 :(得分:2)

我认为UITextField期望字体的垂直大小等于文本字段的高度。如果您想象一个点大小的字体将填充200个点的文本字段的垂直高度,您只能在填充水平宽度之前键入几个字符并从居中行为切换到右对齐行为。这似乎是你的" bug"上面,你只能在切换行为之前键入几个字符。

我认为最好的办法是让文字字段足够高,以适应您的字体,并将其垂直居中于包含UIView