我正在尝试添加"忘记密码"按钮作为我的文本字段的右视图。文本字段具有自定义样式,也应该应用于按钮,因此按钮必须位于文本字段内。
到目前为止我所拥有的是:
let forgotPasswordButton = UIButton()
forgotPasswordButton.setTitle("Forgot", for: .normal)
forgotPasswordButton.addTarget(self, action: #selector(forgotPassword), for: [.touchUpInside])
passwordTextField.rightView = forgotPasswordButton
passwordTextField.rightViewMode = .always
问题是,我的按钮是不可见的。经过一些谷歌搜索后,我意识到我应该将框架设置为按钮,而不是使用.zero
进行初始化。但问题是按钮的标题是本地化的,因此具有不同的宽度。
如何解决此问题?
答案 0 :(得分:1)
您应该从NSString方法大小获得大小:
// Create Label
let forgotPasswordButton = UIButton()
forgotPasswordButton.backgroundColor = .red
// Title and font
let title = "Forgot my wallet in the appartment"
let font = forgotPasswordButton.titleLabel?.font
// Set title
forgotPasswordButton.setTitle(title, for: .normal)
// Get size of title
let fontAttributes = [NSFontAttributeName: font]
let size = (title as NSString).size(attributes: fontAttributes)
// Set frame using found size
forgotPasswordButton.frame = CGRect(origin: .zero, size: size)
然后用你的大小做你的逻辑。
答案 1 :(得分:-2)
你可以创建一个基于UITextfield的自定义类,并覆盖这个选择器,如下所示:
```
override func rightViewRect(forBounds bounds: CGRect) -> CGRect {
var rect = super.rightViewRect(forBounds: bounds);
rect.size.width = rect.size.width*2;
rect.size.height = rect.size.height*2;
return rect;
}
```
您可以通过这种方式根据需要自定义矩形;