ios - 文本字段中的 Border 和 Padding 样式不适用于 swift5
问题描述
我目前正在做这个iOS
项目。我的问题是,没有什么textfield
能改变我。很难找到问题的答案。我应该如何改变它?
import Foundation
import UIKit
class passwrodCheckAlertController : UIViewController {
@IBOutlet weak var passModalAlert: UITextView!
@IBOutlet weak var passTextfield: UITextField!
@IBOutlet weak var cancelbutton: UIButton!
@IBOutlet weak var okButton: UIButton!
// let color = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.5)
let color = UIColor.red
let insets = UIEdgeInsets.init(top: 31.7, left: 0.0, bottom: 0.0, right: 0.0)
override func viewDidLoad() {
super.viewDidLoad()
self.passModalAlert.layer.cornerRadius = 8
self.passTextfield.layer.cornerRadius = 3
self.passTextfield.layer.borderColor = color.cgColor
self.passModalAlert.textContainerInset = insets
changeViewFont()
}
}
class PaddingTextField : UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
bounds.inset(by: UIEdgeInsets(top: 0, left: 100, bottom: 0, right: 15))
return bounds
}
}
主线故事板
画面不变
CornerRadius
在文本视图中效果很好。
提前致谢
编辑开始
我听了评论并使用了leftview
. 并且间隙问题得到了解决。但我的Border
风格仍然没有改变。
let paddingView = UIView(frame: CGRect.init(x: 0, y: 0, width: 10, height: self.passTextfield.frame.height))
self.passTextfield.leftView = paddingView
self.passTextfield.leftViewMode = .always
self.passTextfield.layer.cornerRadius = 3
self.passTextfield.layer.borderColor = color.cgColor
self.passModalAlert.textContainerInset = insets
Border
风格不变。
编辑第二次开始
@IBOutlet weak var passTextfield: PaddingTextField!
...
class PaddingTextField : UITextField {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
//set your border style here
self.layer.cornerRadius = 3
self.layer.borderColor = UIColor.red.cgColor
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
bounds.inset(by: UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 15))
return bounds
}
}
但这并没有改变任何改变。
解决方案
当您创建插座时,您的问题似乎是您的设置,您应该选择 PaddingTextField 而不是 UITextField 因为 UITextField 是一个超类,并且对它的孩子所拥有的附加功能一无所知。
删除 IBOutlet
@IBOutlet weak var passTextfield: UITextField!
并重新创建它应该如下所示:
@IBOutlet weak var passTextfield: PaddingTextField!
希望这可以帮助。
关于边界:
class PaddingTextField : UITextField {
override func awakeFromNib() {
//set your border style here
self.layer.cornerRadius = 3
// Add borderWidth as otherwise you are having a 0 point wide border
self.layer.borderWidth = 5
self.layer.borderColor = UIColor.red.cgColor
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
bounds.inset(by: UIEdgeInsets(top: 0, left: 100, bottom: 0, right: 15))
return bounds
}
}
推荐阅读
- reactive-programming - Smallrye Mutiny 中的 switchIfEmpty 替代方案是什么
- spring-boot - 如何使用 JobLauncherTestUtils 加载 Spring Batch Job 进行测试
- javascript - 将零添加到非前导零日期时间字符串正则表达式
- kubeflow - 在 kubeflow 上上传管道
- java - 在具有惰性行为的 PK 之间休眠 OneToOne
- python - 将 '[Array]' 转换为 jinja 2 中的数组?
- html - 无法使用 Bootstrap 4 对齐正确的导航项目以显示在响应视图中
- c# - 使用 Visual Studio 从 MS Access db 通过 C# 中的特定字段搜索数据
- python - Mac 上的 Pyinstaller – 捆绑应用程序崩溃但 unix 可执行文件工作正常?
- listview - Flutter:如何在 Flutter 中使 ListView 的高度 match_parent