布局 UITextField 无论清除按钮 X
Posted
技术标签:
【中文标题】布局 UITextField 无论清除按钮 X【英文标题】:Layout UITextField regardless of clear button X 【发布时间】:2018-07-18 06:44:11 【问题描述】:我需要将UITextField
水平居中布局,但是,由于清除按钮是其中的一部分,文本字段的(文本输入部分)看起来并不居中 - 清除按钮并不总是可见但它布局时会考虑在内。
在上图中,UITextField
水平居中,但是,没有清除按钮(右侧的 X)并且只有搜索文本,它看起来不像居中。
我能想到的一种方法是继承UITextField
并提供alignmentRectInsets
,对于右侧的插图,我将使用clearButtonRect(forBounds:)
来获取清除按钮的大小,其width
将是正确的插图为alignmentRectInsets
。
问题:
Apple 的文档特别提到不应该直接调用clearButtonRect(forBounds:)
,所以我对此感到有些紧张;但是,从文档中感觉 Apple 的意图是让人们不改变 rect,而在我的情况下,我只是得到它的大小,我想没问题?
有没有更好的方法来实现这一点?我知道我可以调整edgeInsets
,或者给文本字段一个leftView
,使文本字段看起来居中;但他们都需要对清除按钮的大小进行一些硬编码假设。
谢谢!
【问题讨论】:
您可以使用堆栈视图来管理它。在 stackView 中保留 UITextField 和按钮,并在不需要时隐藏按钮,stackView 将自动处理对齐。 @vivekDas 感谢您的回复,但我说的是 clearButton -UITextField
的子视图,而不是我添加的按钮。
你的问题不清楚,可以用按钮添加你的布局图片吗?
@vivekDas 图片已添加
【参考方案1】:
您可以将 UITextField Alignment 设置为中间,然后它将起作用。查看下图
【讨论】:
它不起作用,文本在文本字段中居中,但清除按钮仍然使文本字段相对于文本字段的容器不居中。 是的,如果您的清除按钮可见,它将通过考虑按钮宽度进行对齐,但一旦按钮隐藏,文本将居中。 是的,我想要的只是当清除按钮可见时,它应该在自动布局方面被忽略。【参考方案2】:你可以在这里控制。它可能对你有帮助。谢谢。
【讨论】:
以上是关于布局 UITextField 无论清除按钮 X的主要内容,如果未能解决你的问题,请参考以下文章
UITextField 清除按钮调用 didEndEditing 两次