【问题标题】:Swift 4.2: UITextField secureEntryText using Image instead of Default BulletsSwift 4.2:使用图像而不是默认项目符号的 UITextField secureEntryText
【发布时间】:2019-10-29 09:27:34
【问题描述】:

我想创建一个自定义的 UITextField 类,其中打开了secureTextEntry,所以当我输入文本时,文本将隐藏并更改为 UIImage 而不是默认的“项目符号”。

这个问题与this question有关,但我想用UIImage代替自定义字体。有人知道怎么做吗?

这是预期结果的示例:

这是我当前的自定义类:

import UIKit
@IBDesignable
class SecuredBorderTextField: UITextField {
}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    经过两天的努力,我找到了可以解决这个问题的解决方案。我正在创建包含UITextFieldstackView。我为填充UITextField 的临时文本创建数组。然后,当 UITextField 被某个字符填充时,我以编程方式添加UIImage。在我的代码中,将如下所示。

    let chars = Array(shieldString)
    for (index, char) in chars.enumerated() {
                    if let tmp = self.stackView.arrangedSubviews[index] as? UITextField {
                        let imageView = UIImageView(image: UIImage(named: "dotImage")!)
                        imageView.frame = CGRect(x: 0, y: 0, width: 28, height: 28)
                        imageView.center = CGPoint(x: tmp.frame.size.width  / 2, y: tmp.frame.size.height / 2)
                        imageView.tag = 100
                        tmp.addSubview(imageView)
                    }
     }
    

    为了清除图像,只需使用它即可。我使用标签,所以我可以删除特定的子视图。

    for ele in self.stackView.arrangedSubviews {
                    if let viewWithTag = self.view.viewWithTag(100) {
                        viewWithTag.removeFromSuperview()
                    }
    }
    

    我知道这不是自定义类,而且安静混乱,但如果你像我一样着急,这可能会救你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多