将图像添加到Xcode中的UITextField吗?


67

在此处输入图片说明

我需要实现 dropdown在Xcode中。

为此,我正在使用UIPickerview

当点击文本字段(在textFieldDidBeginEditing :)事件上时,将加载pickerView。

题:

有没有办法添加图像TextField

图像就像一个箭头标记,通过它用户可以了解点击时dropdown出现。textfield我该如何做呢?


您可以在文本字段旁边添加一个按钮(带有箭头图像)以打开pickerview。
Ramaraj T 2012年

我可以通过编程方式将诸如imageview之类的内容添加到文本字段吗?
亲爱的

1
如果您不希望用户编辑文本字段,则可以使用按钮代替文本字段。
Ramaraj T 2012年

请参阅下面的安德烈·切尔努卡(Andrey Chernukha)的答案
T

Answers:


150

UITextField有一个rightView属性,如果您有这样的图像,enter image description here则可以轻松地将ImageView对象设置为rightView:

UITextField *myTextField = [[UITextField alloc] init];

myTextField.rightViewMode = UITextFieldViewModeAlways;
myTextField.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"downArrow.png"]];


9
如果我在textField左侧添加图像。我们如何管理图像和文本之间的间距。
Jogendra.Com 2013年

@Joge您将添加图像到一个UIView,并设置宽度意见,包括你想填充
副科级

39

在Swift中:

textField.leftViewMode = UITextFieldViewMode.Always
textField.leftView = UIImageView(image: UIImage(named: "imageName"))

优雅的解决方案!,但是我也很难为uitexfield设置背景图像(不是左视图,而是整个背景),您能迅速告诉我如何吗?
Bhimbim 2015年

要在图像上设置正确的边距/填充,请先创建尺寸比图像大一点的视图。并创建图像视图,将其放在UIView中,然后将UIImageView添加到UIView。现在最后一步是将此UIView设置为.leftView。
kishorer747 '16

31

您可以将放在您UIImageView的左侧UITextField

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(96, 40, 130, 20)];
[textField setLeftViewMode:UITextFieldViewModeAlways];
textField.leftView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"searchIccon.png"]];

1
谢谢Erhan,IMO,您的解决方案是最好的也是最短的!这对我帮助很大:)
Davit Siradeghyan 2014年

欢迎您的Davit :)。真的,我很高兴听到您的声音:)
Erhan Demirci


6

要在图像和文本字段之间添加适当的边距/填充,请尝试以下代码。扩展@ King-Wizard的答案。

在这里,我的TextField的高度为44。检查所附图像以供参考。

迅捷版:

emailTF.leftViewMode = .Always
let emailImgContainer = UIView(frame: CGRectMake(emailTF.frame.origin.x, emailTF.frame.origin.y, 40.0, 30.0))
let emailImView = UIImageView(frame: CGRectMake(0, 0, 25.0, 25.0))
emailImView.image = UIImage(named: "image1")
emailImView.center = emailImgContainer.center
emailImgContainer.addSubview(emailImView)
emailTF.leftView = emailImgContainer

在此处输入图片说明


3

第1步:将此类添加到您的项目中,然后将其添加到身份检查器中的textFiled的类中,

class MyCustomTextField: UITextField {

    @IBInspectable var inset: CGFloat = 0

    @IBInspectable var leftImage: String = String(){
        didSet{
            leftViewMode = UITextFieldViewMode.Always
            leftView = UIImageView(image: UIImage(named: leftImage))
        }
    }

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(bounds, inset, inset)
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        return textRectForBounds(bounds)
    }

    override func leftViewRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(CGRectMake(0, 2, 40, 40), 10, 10) //Change frame according to your needs
    }
}

步骤2:从界面构建器设置文本插图和左侧图像。

在此处输入图片说明

第三步:享受。


您可以将leftImage设置为UIImage类型,这将为您提供不错的直接图像输入。
Roman Roba '18

3

嗨,您想要下拉菜单的队友,然后看到此自定义下拉视图..

  1. http://code.google.com/p/dropdowndemo/downloads/list
  2. http://ameyashetti.wordpress.com/2010/09/26/drop-down-demo/

并为此要求使用此代码

UITextField *txtstate =[[UITextField alloc]init]; [txtstate setFrame:CGRectMake(10, 30,170, 30)]; 
txtstate.delegate=self; 

txtstate.text=@"Fruits"; 

txtstate.borderStyle = UITextBorderStyleLine; 

txtstate.background = [UIImage imageNamed:@"dropdownbtn.png"]; 

[txtstate setAutocorrectionType:UITextAutocorrectionTypeNo]; 
[self.view addSubview:txtstate];

并设置您的文本框边框样式为无。


txtstate = [[UITextField alloc] init]; [txtstate setFrame:CGRectMake(10,30,170,30)];txtstate.delegate = self; txtstate.text = @“水果”; txtstate.borderStyle = UITextBorderStyleNone; txtstate.background = [UIImage imageNamed:@“ Arrow-Down-black-32.png”]; [txtstate setAutocorrectionType:UITextAutocorrectionTypeNo]; [self.view addSubview:txtstate]; 确实这样,但我也需要边界。我该怎么办?
亲爱的

您使用哪个伴侣?意味着您使用此自定义下拉菜单??
Paras Joshi 2012年

@arizah,您确实签出了下拉菜单的演示。.我认为这是非常有用的花花公子..而且,如果您想边框,我会给边框提供很多类型,然后我发布代码只是告诉我您现在需要代码?
Paras Joshi 2012年

是的,我经历了...我明白了。谢谢
Honey

朋友非常感谢您的留言。.我对其他概念确实有疑问。.我可以收到您的邮件ID吗?
亲爱的

2

UITextField具有以下属性:

@property(nonatomic, retain) UIImage *background

例:

UITextField *myTextField = [[UITextField alloc] init];
myTextField.background = [UIImage imageNamed:@"myImage.png"];

是的,但是我应该如何将此uiimage链接到文本字段?
亲爱的

1
      emailTextField.leftViewMode = .alway
    let emailImgContainer = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 25))
    let emailImg = UIImageView(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
    emailImg.image = UIImage(named: "SomeIMG")
    emailImgContainer.addSubview(emailImg)
    emailTextField.leftView = emailImgContainer

在此处输入图片说明


1
嗨,欢迎来到SO :)。您能否在答案中添加更多详细信息?这将使您更容易理解您的解决方案。谢谢!
CodeF0x

单击您可以理解的“在此处输入图像描述”
Td Prashanth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.