Swift 无法获取适合UITextField边界的图像

Swift 无法获取适合UITextField边界的图像,swift,uiimageview,uitextfield,Swift,Uiimageview,Uitextfield,我试图将图像缩小到UITextField的大小,并将其自身定位到其左侧,但我只能得到以下结果: 我做错了什么 以下是相关代码: //MARK: - Add Left Image to UITextField func addLeftImageTo(txtField: UITextField, image img: UIImage) { let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height

我试图将图像缩小到UITextField的大小,并将其自身定位到其左侧,但我只能得到以下结果:

我做错了什么

以下是相关代码:

//MARK: - Add Left Image to UITextField

func addLeftImageTo(txtField: UITextField, image img: UIImage) {
    let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
    leftImageView.image = img
    txtField.addSubview(leftImageView)
    txtField.leftView = leftImageView
    txtField.leftViewMode = .always
}

let image1 = UIImage(named: "stopwatch")

addLeftImageTo(txtField: timerTextField, image: image1!)

timerTextField.anchor(top: repsTextField.bottomAnchor, leading: view.safeAreaLayoutGuide.leadingAnchor, bottom: notesTextField.topAnchor, trailing: view.safeAreaLayoutGuide.trailingAnchor, padding: .init(top: 50.adjusted, left: 100.adjusted, bottom: 50.adjusted, right: 100.adjusted))

尝试在UIView中包装UIImageView

您的代码:

func addLeftImageTo(txtField: UITextField, image img: UIImage) {
        let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
        leftImageView.image = img
        txtField.addSubview(leftImageView)
        txtField.leftView = leftImageView
        txtField.leftViewMode = .always
    }
func addLeftImageTo(txtField: UITextField, image img: UIImage) {
    let height = txtField.frame.size.height
    let wrapView = UIView(frame: CGRect(x: 0, y: 0, width: height, height: height))

    let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: height, height: height))
    leftImageView.image = img
    leftImageView.contentMode = .scaleToFill
    wrapView.addSubview(leftImageView)

    txtField.addSubview(wrapView)
    txtField.leftView = wrapView
    txtField.leftViewMode = .always
}
示例:

func addLeftImageTo(txtField: UITextField, image img: UIImage) {
        let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
        leftImageView.image = img
        txtField.addSubview(leftImageView)
        txtField.leftView = leftImageView
        txtField.leftViewMode = .always
    }
func addLeftImageTo(txtField: UITextField, image img: UIImage) {
    let height = txtField.frame.size.height
    let wrapView = UIView(frame: CGRect(x: 0, y: 0, width: height, height: height))

    let leftImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: height, height: height))
    leftImageView.image = img
    leftImageView.contentMode = .scaleToFill
    wrapView.addSubview(leftImageView)

    txtField.addSubview(wrapView)
    txtField.leftView = wrapView
    txtField.leftViewMode = .always
}
另外,为了以防万一,我添加了一些行,包括高度内容模式


我希望它能对您有所帮助。

首先在
UITextField

  func setleftPaddingInTextfieldwithImage(_ textfield : UITextField, padding : 
   CGFloat, strImgname : String)
   {

        let imageView = UIImageView(image: UIImage(named: strImgname))
        imageView.frame = CGRect(x: 0, y: 0, width: 15 , height: 15)

        imageView.contentMode = .scaleAspectFit

        let paddingView = UIView.init()
        paddingView.frame = CGRect(x: padding, y: 0, width: padding, height: textfield.frame.size.height)

        paddingView.addSubview(imageView)
        textfield.leftView = paddingView
        textfield.leftViewMode = .always

   }
在viewcontroller中调用它

 self.setleftPaddingInTextfieldwithImage(YourTextField, padding: padding, strImgname: "stopwatch")

谢谢你,我很感激你的建议,但不幸的是,这对我不起作用。当我试图实现这段代码时,图像完全消失了。@RapsIn4您能尝试将let height设置为40而不是txtField.frame.size.height吗?谢谢,伙计,它成功了!改变高度对我有好处。