UITextField中的占位文本和输入文本不对齐。

6

我有一个带有占位文本的UITextfield。

我已经使用了所有对齐属性,但是占位文本仍然有点偏上。有人能帮我吗?

谢谢。


你可以分享一下你正在使用的实际代码吗? - Nosrettap
我最终通过子类化UITextField并覆盖drawPlaceholderInRect和drawTextInRect方法来解决问题。我注意到有三个不同的部分——绘制的静态文本、编辑文本和占位符。我认为编辑模式的设置考虑了字体本身的一些问题,而这种方式不会影响静态文本。但是,静态文本是最容易覆盖以解决问题的部分。 - Allison A
4个回答

3
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

1
这是我在MonoTouch中解决文本框占位符与文本对齐问题的方案。如我在评论中所述,这里有三个不同的部分:编辑、静态文本和静态占位符。在Objective-C中的相应函数是drawTextInRect:drawPlaceholderInRect:
我的解决方案是创建一个子类来偏移未对齐的项目。不幸的是,这个问题似乎与字体文件本身以及编辑模式影响它与iOS渲染静态文本的方式有关。
希望这可以帮助到某些人。
Allison
public class MyTextField : UITextField
{
    public MyTextField(RectangleF rect) : base(rect)
    {
    }

    public override void DrawPlaceholder(RectangleF rect)
    {
        base.DrawPlaceholder(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height));
    }

    public override void DrawText(RectangleF rect)
    {
        base.DrawText(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height));
    }
}

0
我建议你尝试调整使用CGRectMake创建框架时的Y大小。也许可以把它缩小一些?

0
根据 UITextField 文档,您应该使用 textAlignment 属性。正如文档所述“此属性适用于主文本字符串和占位符字符串。此属性的默认值为 UITextAlignmentLeft。”
因此你的代码应该类似于:
textfield.textAlignment = UITextAlignmentLeft

或者根据您想要对齐文本的方式,您可以在=符号后使用UITextAlignmentCenterUITextAlignmentRight


好的,这并没有帮助。就像输入的文本或占位符文本对齐一样(垂直居中对齐)。不确定为什么这两个文本都没有正确对齐。 - Ahsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接