我有一个应用程序,用户必须在其中键入四位pin码.所有数字之间必须保持设定的距离.

如果PinTextFieldUIView的一个子类,有没有办法做到这一点?我知道在ViewController中,你可以使用UITextFieldTextDidChangeNotification,并为每次更改设置属性文本.不过,在UIView中,通知似乎不起作用.

我还想知道,如果要设置UITextField个文本的字母间距,是否有比为每次更新生成属性字符串更简单的方法?

正确的间距:

TextField with correct spacing

错误间距:

TextField with wrong spacing

推荐答案

不需要go attributedText,老实说,这是一个混乱的实施修改间距.我一合上键盘,空格就消失了,这促使我进一步挖掘.

每个UITextField都有一个名为defaultTextAttributes的属性,根据Apple "returns a dictionary of text attributes with default values."的说法.Apple document人也表示"this property applies the specified attributes to the entire text of the text field"

只需在代码中找到一个合适的地方,通常是文本字段被初始化的地方,然后复制并粘贴以下内容.

用Swift 3.0回答

textfield.defaultTextAttributes.updateValue(spacing, forKey: NSKernAttributeName)

其中间距为CGFloat类型.例如2.0

这也适用于不同的字体.

干杯


最新的语法似乎是:

 yourField.defaultTextAttributes.updateValue(36.0, 
     forKey: NSAttributedString.Key.kern)

Swift相关问答推荐

为什么不能使用actor作为AsyncSequence中的状态机类型?

如果通过计时器循环运行,则检索CPU利用率百分比的SWIFT脚本运行良好.似乎在没有计时器的情况下停留在初始百分比上

快速并行读取进程 standardOutput 和 standardError 而不会阻塞

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

如何制作一个在 SceneKit 中投射阴影的透明物体?

解码 JSON 时 Swift Struct Decoder 初始化程序错误

我怎样才能缩短(提高效率)这段代码?

使用 RxSwift 围绕 async/await 方法创建 Observable

按钮图像不会立即刷新

如何使 SwiftUI Picker 换行文本

如何删除标签和步进按钮之间的间距是 SwiftUI Stepper?

Swift - 如何更新多目录中的对象

找不到接受提供的参数的/的重载

如果没有标记,则为 Swift 预处理器

如何实现 Swift 的 Comparable 协议?

Type 应该采用什么协议来让泛型函数将任何数字类型作为 Swift 中的参数?

Swift:创建 UIImage 数组

在 Swift 中子类化 NSObject - 初始化器的最佳实践

如何判断 firebase 数据库值是否存在?

如何快速显示数组的所有元素?