为什么我在文本字段中的左视图不起作用?

时间:2017-02-26 14:32:37

标签: ios swift uitextfield textfield

我已使用以下代码在文本字段中添加了左视图:

    usernameField.leftViewMode = UITextFieldViewMode.always
    passwordField.leftViewMode = UITextFieldViewMode.always

    let usernameImageView = UIImageView()
    let usernameImage = UIImage(named: "user icon grey.png")
    usernameImageView.image = usernameImage
    usernameField.leftView = usernameImageView

    let passwordImageView = UIImageView()
    let passwordImage = UIImage(named: "lock icon grey.png")
    passwordImageView.image = passwordImage
    passwordField.leftView = passwordImageView

这没有用,我接着在StackOverflow上添加了一个UIDesignable,这是一个非常简洁的过程。这意味着我可以在故事板中看到图标,如下所示。但是,这并没有显示出来。 Simulator Photo without text field icons Storyboard with the text field icons

Swift add icon/image in UITextField

2 个答案:

答案 0 :(得分:4)

问题在于如何创建图像视图。首先创建一个空图像视图,然后没有大小。然后,您将图像分配给图像视图,但这不会自动调整图像视图的大小。

有两种解决方案。

  1. 分配图像后,告诉图像视图调整自身大小。

    let usernameImageView = UIImageView()
    let usernameImage = UIImage(named: "user icon grey.png")
    usernameImageView.image = usernameImage
    usernameImageView.sizeToFit()
    
  2. 使用图像创建图像视图。这是一种更简单的方法。

    let usernameImage = UIImage(named: "user icon grey.png")
    let usernameImageView = UIImageView(image: usernameImage)
    

答案 1 :(得分:1)

问题在于您的代码。现在使用此代码,您在textField中的左视图正在运行。

@IBOutlet weak var name: UITextField!
override func viewDidLoad() {
  super.viewDidLoad()
  usernameField.leftViewMode = .always
  let usernameImageView = UIImageView()
  usernameImageView.frame = CGRect(x: 0, y: 0, width: 25, height: 25)
  let usernameImage = (your image name)
  usernameImageView.image = usernameImage
  usernameField.leftView = usernameImageView