Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 占位符文本和键入的文本未在UITextField中对齐_Objective C_Ios_Uitextfield - Fatal编程技术网

Objective c 占位符文本和键入的文本未在UITextField中对齐

Objective c 占位符文本和键入的文本未在UITextField中对齐,objective-c,ios,uitextfield,Objective C,Ios,Uitextfield,我有一个带有占位符文本的UITextfield 我使用了这两种对齐属性。然而,palceholder文本仍然有点偏上。有人能帮我吗 谢谢。根据UITextField文档,您应该使用textAlignment属性。正如文档中所述,“此属性同时应用于主文本字符串和占位符字符串。此属性的默认值为UITextAlignmentLeft。” 因此,您的代码看起来像: textfield.textAlignment = UITextAlignmentLeft 或者,根据您想要对齐文本的方式,您可以在=符号

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

我使用了这两种对齐属性。然而,palceholder文本仍然有点偏上。有人能帮我吗


谢谢。

根据
UITextField
文档,您应该使用
textAlignment
属性。正如文档中所述,“此属性同时应用于主文本字符串和占位符字符串。此属性的默认值为UITextAlignmentLeft。”

因此,您的代码看起来像:

textfield.textAlignment = UITextAlignmentLeft

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

我想说的是,使用CGRectMake创建帧时使用的Y大小进行调整。也许可以缩小它?

这是我在MonoTouch中解决占位符与文本对齐问题的方法。正如我在评论中指出的——有三个不同的部分:编辑、静态文本和静态占位符。Objective-C中的等效项是drawTextInRect:drawPlaceholderInRect:

textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
我的解决方案是对错误对齐的项进行子类化和偏移。不幸的是,这个问题似乎与字体文件本身以及编辑模式对它的影响有关,而与iOS如何呈现静态文本有关

希望这对别人有帮助

艾利森

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));
    }
}

您能发布您正在使用的实际代码吗?我最终将UITextField子类化,并重写了drawPlaceholderInRect和drawTextInRect。我注意到三个不同的部分——绘制的静态文本、编辑文本和占位符。我认为编辑模式的设置方式考虑了字体本身的一些问题,不会影响静态文本。但是静态是解决问题最容易覆盖的。好吧,这没有帮助。它类似于键入的文本对齐或占位符文本对齐(中心垂直对齐)。不知道为什么这两个文本没有正确对齐