我需要水平放置UITextField的居中位置,但是,由于清除按钮是其中的一部分,因此文本字段的(文本输入部分)看起来并不居中-清除按钮并非始终可见,但是会被放入布局时记帐。

ios - 布局UITextField与清除按钮X无关-LMLPHP

在上图中,UITextField是水平居中的,但是,如果没有清除按钮(右侧的X),并且仅具有搜索文本,它看起来就不会居中。

我可以想到的一种方法是将UITextField子类化并提供alignmentRectInsets,对于右侧的插图,我将使用clearButtonRect(forBounds:)来获取清除按钮的大小,其width将是。

题:


Apple的文档特别提到不应直接调用alignmentRectInsets,因此我对此感到有些紧张。但是,从文档中可以感觉到Apple的意图是让人们不要更改直肠,而就我而言,我只是在确定其尺寸,我想这还好吗?
有没有更好的方法来实现这一目标?我知道我可以调整clearButtonRect(forBounds:)或为文本字段指定edgeInsets,以使文本字段看起来居中。但是他们都需要对清除按钮的大小进行一些硬编码的假设。


谢谢!

最佳答案

您可以将UITextField Alignment设置设置为中间,然后它将起作用。检查下图

ios - 布局UITextField与清除按钮X无关-LMLPHP

关于ios - 布局UITextField与清除按钮X无关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51395210/

10-09 09:14