ios - 添加到 UITextField 的 CALayer 不会出现在 xib View 上

标签 ios swift uitextfield calayer xib

我希望我的一些 UITextField 在文本下只有一条简单的线(并且没有边框)。我创建了 UITextField 的一个小子类(我把它放在 Github 上,所以如果你想查看代码,可以去 there )。我使用高度为 1px 的 CALayer,并将其添加到我的 UITextField 中。

这对于我的几乎所有文本字段都工作得很好,但是当我在 Xib 文件中的文本字段上使用它时,底线不会出现。

最佳答案

将以下代码添加到您的 setProperties() 方法中。

    layer.masksToBounds = false

为什么这样可以解决问题?好吧,根据文档,CALayermasksToBounds 属性默认为 false。一个合理的假设是,Apple 的 UITextField 的 initWithCoder() 初始化程序的实现将 View 层的 masksToBounds 属性设置为 true,而他们的UITextField 的 initWithFrame() 初始值设定项则不然。不一致自然会导致困惑,如下所示。

上面的代码保证图层的 masksToBounds 属性始终为 false,无论调用哪个初始值设定项。

关于ios - 添加到 UITextField 的 CALayer 不会出现在 xib View 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616381/

相关文章:

ios - 如何在 swift 中制作这样的文本字段?

ios - 缓慢的 iOS 字符串操作......为什么?

ios - Swift 中 UITextField/UIView 的摇动动画

ios - 在 Swift 中保护我基于 JSON 的关卡配置数据

objective-c - Gnustep - 视频录制应用程序

ios - 如何知道 textView 滚动到底部?

ios - TableView 到 DetailView 视频 - Swift

ios - 为什么 UITextView/UITextField 无法在 iOS 上实现 UITextInput

iOS-Arduino通信: any cheap solution?

iOS App > 无法设置远程报价 sdp : Called with SDP without DTLS fingerprint