带有自定义边框的 UITextField 上的浮动 UILabel

Byr*_*see 6 uitextfield uilabel ios

我基本上试图创建一个UITextField,当用户输入某些内容时,它会在UILabel顶部边框上显示占位符文本。

我已经设法使UILabel动画和所有内容就位,除了当我给它(边框)自定义颜色和宽度时,它UITextField的边框穿过。UILabel如果我离开标准RoundedRect边框,而不给出borderColorborderWidth,那么一切都会完美运行。不过我需要颜色:/

(忽略红色背景 - 这样做是为了可见性)

自定义 borderColor 通过标签 自定义 borderColor 通过标签

这是没有自定义边框的(请参阅 - 没有边框UILabel

标准圆角矩形边框

所以是的 - 任何帮助将不胜感激。谢谢

Byr*_*see 0

感谢大家的回答 在我在这里发帖后,我已经坐了很长时间了,两个小时后,我明白了。典型的。

我专门尝试创建 的子类,UITextField这样我就可以在各处重复使用它,而不会遇到太多麻烦。这就是为什么我不想制作一个UIView包含UITextFieldUILabel作为子视图的原因 - 然后我每次都必须这样做......并不理想。

因此,在深入研究 a 的视图层次结构后UITextField,发现有一个子视图_UITextFieldRoundedRectBackgroundViewNeue始终位于第一个,并且是保存边框的子视图roundedRect。通过添加自定义边框layer.border实际上会将其添加到框架上 - 在整个视图层次结构的顶部。这就是为什么它会在UILabel.

所以我所做的就是应用 a layer.border_UITextFieldRoundedRectBackgroundViewNeue本质上迫使边框始终位于底部,位于所有内容的后面。

我建议这样做的任何人都进行检查,if subviews[0].classForCoder.description() == "_UITextFieldRoundedRectBackgroundViewNeue"以确保它确实存在,并确保您没有向您不期望的随机子视图添加边框。

现在,将 a 添加UILabel到具有白色背景的实际UITextField对象中,将产生浮动标签的效果。甜的。

在此输入图像描述