gpt4 book ai didi

ios - 如何向 PhoneNumberTextField 中的文本和占位符添加插图

转载 作者:搜寻专家 更新时间:2023-11-01 06:54:10 25 4
gpt4 key购买 nike

我需要使用文本字段让用户输入电话号码,所以我使用了项目 PhoneNumberKit 中的 PhoneNumberTextField .

默认情况下它只是一个无边框的文本框。我修改了它,添加了一个带有圆角半径的边框,并在其 leftView 中添加了一个 UIButton。问题是文本/占位符显示在边框上。

enter image description here

enter image description here

我尝试子类化 PhoneNumberTextField 并像这样添加文本插入功能。

@IBDesignable
class CNPhoneNumberTextField: PhoneNumberTextField {
@IBInspectable var inset: CGFloat = 0

override func textRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: inset, dy: inset)
}

override func editingRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: inset, dy: inset)
}

override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
return bounds.insetBy(dx: inset, dy: inset)
}
}

这里的问题是它现在没有考虑 leftView。文本/占位符部分被 leftView 覆盖。

enter image description here

还有其他方法可以解决这个问题吗?

Demo project

最佳答案

您需要更新您的 CNPhoneNumberTextField 类,如下所示,您可以在 Storyboard中为您的 textField 提供 leftPadding

您的类(class)将如下所示:

import UIKit
import PhoneNumberKit

@IBDesignable
class CNPhoneNumberTextField: PhoneNumberTextField {

@IBInspectable var leftPadding: CGFloat = 0

override open func textRect(forBounds bounds: CGRect) -> CGRect {

let padding = UIEdgeInsets(top: 0, left: leftPadding, bottom: 0, right: 0)
return bounds.inset(by: padding)
}

override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {

let padding = UIEdgeInsets(top: 0, left: leftPadding, bottom: 0, right: 0)
return bounds.inset(by: padding)
}

override open func editingRect(forBounds bounds: CGRect) -> CGRect {

let padding = UIEdgeInsets(top: 0, left: leftPadding, bottom: 0, right: 0)
return bounds.inset(by: padding)
}
}

从带有属性检查器部分的 Storyboard中,您可以分配左填充,如:

enter image description here

你的结果将是:

enter image description here

引用自THIS回答。

编辑:

HERE是演示项目。

关于ios - 如何向 PhoneNumberTextField 中的文本和占位符添加插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54863001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com