- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现 UITextField 编辑或不编辑这样的样式:
但对我来说最棘手的部分是如何更改左侧图像的色调。 到目前为止我已经做到了这一点:
我的代码:
UITextField
lazy var email: UITextField = {
let name = UITextField()
name.layer.cornerRadius = 17.5
name.layer.borderColor = UIColor(red: 0.55, green: 0.61, blue: 0.69, alpha: 0.5).cgColor
name.layer.borderWidth = 1.5
name.placeholder = "Email"
name.font = UIFont.systemFont(ofSize: 15)
name.textColor = UIColor(red: 0.55, green: 0.61, blue: 0.69, alpha: 1)
name.backgroundColor = .clear
name.leftViewMode = UITextFieldViewMode.always
name.delegate = self
name.translatesAutoresizingMaskIntoConstraints = false
return name
}()
左图功能:
func addLeftImageTo(txtField: UITextField, andImage img: UIImage) {
let leftView = UIView(frame: CGRect(x: 0, y: 0, width: 42.75, height: 40))
let centerX: CGFloat = (leftView.frame.midX) - (img.size.width / 2)
let centerY: CGFloat = (leftView.frame.midY) - (img.size.height / 2)
let leftImageView = UIImageView(frame: CGRect(x: centerX + 2 , y: centerY - 1, width: img.size.width, height: img.size.height))
leftImageView.contentMode = .scaleAspectFit
leftImageView.image = img
leftView.addSubview(leftImageView)
txtField.leftView = leftView
txtField.leftViewMode = .always
}
添加左图:
let emailLeftImg = UIImage(named: "ic_txt_field_email")
addLeftImageTo(txtField: email, andImage: emailLeftImg!)
let passwordLeftImg = UIImage(named: "ic_txt_field_password")
addLeftImageTo(txtField: password, andImage: passwordLeftImg!)
编辑开始和结束:
func textFieldDidBeginEditing(_ textField: UITextField) {
self.setTextBorder(textField: textField, color: UIColor.white, borderColor: UIColor.white, isSelected: true)
}
func textFieldDidEndEditing(_ textField: UITextField) {
self.setTextBorder(textField: textField, color: UIColor.clear, borderColor: UIColor(red: 0.55, green: 0.61, blue: 0.69, alpha: 0.5), isSelected: false)
}
func setTextBorder(textField: UITextField, color: UIColor, borderColor: UIColor, isSelected: Bool) {
textField.backgroundColor = color
textField.layer.borderColor = borderColor.cgColor
textField.tintColor = UIColor(red: 1.0, green: 0.2, blue: 0.33, alpha: 1)
textField.layer.masksToBounds = false
if isSelected == true {
textField.layer.shadowRadius = 3.0
textField.layer.shadowColor = UIColor.black.cgColor
textField.layer.shadowOffset = CGSize(width: 0, height: 2)
textField.layer.shadowOpacity = 0.125
} else {
textField.layer.shadowRadius = 0
textField.layer.shadowColor = UIColor.clear.cgColor
textField.layer.shadowOffset = CGSize(width: 0, height: 0)
textField.layer.shadowOpacity = 0
}
}
我曾尝试添加此代码来更改图像颜色,但没有成功。
var picTintColor: Bool = false
在 LeftImage 函数中:
if picTintColor == true {
leftImageView.image = img.withRenderingMode(.alwaysTemplate)
leftImageView.tintColor = .blue
} else {
leftImageView.image = img
}
并在编辑 Begains 和 Ending 函数中:
if isSelected == true {
picTintColor = true
} else {
picTintColor = false
}
我是 IOS 编程的完全菜鸟,所以感谢您的耐心等待,并为我糟糕的英语感到抱歉。谢谢!
最佳答案
根据代码,它实际上不能将isSelected信号传递给leftImageView,可能是leftImageView get in laster 不是更早的,或者信号没有通过成功。我建议采用一种简单的方法,只需在 editingBegains and Ending: 中执行您想要的操作即可更改 ImageView ,如下所示:
func textFieldDidBeginEditing(_ textField: UITextField) {
let emailLeftImg = UIImage(named: "ic_txt_field_email")
addLeftImageTo(txtField: email, andImage: emailLeftImg!)
}
func addLeftImageTo(txtField: UITextField, andImage img: UIImage) {
let leftView = UIView(frame: CGRect(x: 0, y: 0, width: 42.75, height: 40))
let centerX: CGFloat = (leftView.frame.midX) - (img.size.width / 2)
let centerY: CGFloat = (leftView.frame.midY) - (img.size.height / 2)
let leftImageView = UIImageView(frame: CGRect(x: centerX + 2 , y: centerY - 1, width: img.size.width, height: img.size.height))
leftImageView.contentMode = .scaleAspectFit
if picTintColor == true {
leftImageView.image = img.withRenderingMode(.alwaysTemplate)
leftImageView.tintColor = .blue
} else {
leftImageView.image = img
}
leftView.addSubview(leftImageView)
txtField.leftView = leftView
txtField.leftViewMode = .always
}最后是delgate方法,就是这样,你可以试试这个方法来测试。希望对你有帮助。
关于ios - 如何在编辑时更改 uitextfield leftView image tintColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863547/
是否可以使用 leftView 设置 UITextField,以便如果用户单击 UITextField,键盘就会显示,但如果他们单击 leftView 中的图标,则会调用另一种方法(即显示 UIPic
我正在尝试更改调整 UIImageView 的大小,该 UIImageView 是我的 UITextField 的 leftView,但没有任何成功。图像总是巨大的。我希望它与我的 UITextFie
我想在 EditText 中放置一个图标,所以我这样做了: android:drawableLeft="@drawable/search_icon" 问题是图像比 EditText 大,所以 Edit
我正在将 UIImageView 设置为 UITextField 上的 leftView,如下所示: UIImageView *envelopeView = [[UIImageView alloc]
我正在尝试将一个空白 UIView 添加到多个 UITextField 以提供一些填充。但我的应用程序卡住(不崩溃)。谁能告诉我可能是什么问题?这是我的代码。 var paddingView = UI
我正在创建一个将图像添加到 UITextField 的 leftView 的函数,下面是我尝试过的代码。 func setLeftImageWithColor(image:UIImage, color
尽管 UITextField 添加了一个 leftView,但我还是希望将文本字段(包括占位符文本)中的文本居中(水平对齐)。 将左 View 添加到 UITextField 时,文本不再居中。 我该
我正在尝试实现 UITextField 编辑或不编辑这样的样式: 但对我来说最棘手的部分是如何更改左侧图像的色调。 到目前为止我已经做到了这一点: 我的代码: UITextField lazy var
目前我正在用图像设置 leftView,我发现图像太靠近文本输入 View (在本例中是标准的 UITextField文本输入 View )。有没有办法稍微移动文本输入 View 的框架,以增加它与
这类似于 UITextField rightView overlaps right align text但我很难理解如何解决这个问题: 重叠发生在 ios 13.1 上我设置 borderStyle
我有一个 UITextField,我在 rightView 中添加了一个图像。我已经向这个 rightView 添加了一个手势,我想让它在 UITextField 被禁用时工作,因为这个 View 只
iOS7 上 UITextField 的 leftView 和 rightView View 非常接近文本框的边框。 如何为这些项目添加一些(水平)填充? 我尝试修改框架,但没有成功 uint pad
iOS 12.0 和 Xcode 10.0 iOS 13.0 和 Xcode 11.0 我采用了带有图像和标签的自定义 LeftView,用于在 UITextField 中添加 LeftView。我也
为了在 Swift 4.2 中的 UITextField 中创建填充效果,我使用了以下技术: import UIKit class BioController: UIViewController {
这让我有点头疼。在我正在构建的应用程序中,我使用了 UITextField,并添加了一个按钮作为 leftView 属性。然而,似乎在 iPad(包括 sim 和设备)上,按钮正在接收超出其范围的触摸
我的应用程序中的 UITextFields 定义了占位符文本(在 Interface Builder 中),当我点击占位符文本占据的区域时,我无法使这些字段获得焦点(即显示键盘并允许编辑)。如果我点击
我正在使用 UILabel 作为 UITextField 的 leftView。问题是文本字段的文本高于标签的文本。 这是我目前使用的代码 UILabel *startsWith = [[UILabe
我想设置一个leftView和 leftViewMode我的UITextField直接在界面生成器中。 我认为这是不可能的,因为我在属性检查器的任何地方都找不到它。只是为了确保在我开始在代码中实现它之
我通过使用 Material 库来使用 TextField。这就是默认实现(分隔线仅在文本区域下)。 有什么办法可以将分隔线放在 LeftView/Image 下方并减小 Image 和 Text 之
我是一名优秀的程序员,十分优秀!