在 Xcode 中将图像添加到 UITextField?

Posted

技术标签:

【中文标题】在 Xcode 中将图像添加到 UITextField?【英文标题】:Add image to UITextField in Xcode? 【发布时间】:2012-11-22 08:51:09 【问题描述】:

我需要在 Xcode 中实现dropdown 的概念。

为此,我使用UIPickerview

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

问题:

有没有办法可以将图像添加到TextField

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

【问题讨论】:

您可以在文本字段旁边添加一个按钮(带有箭头图像)以打开选择器视图。 我可以以编程方式将 imageview 之类的内容添加到文本字段吗? 如果您不希望用户编辑文本字段,您可以使用按钮代替文本字段。 在下面查看 Andrey Chernukha 的回答 这个问题可能重复:***.com/questions/5094907/custom-uitextfield 【参考方案1】:

UITextField 有一个rightView 属性,如果你有这样的图像- 那么你可以很容易地将 ImageView 对象设置为 rightView:

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

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

【讨论】:

边界请浏览此博客icodeblog.com/2010/01/04/uitextfield-a-complete-api-overview 如果我在文本字段的左侧添加图像。我们如何管理图像和文本之间的间距。 @Joge 您将图像添加到 UIView 并设置视图宽度,包括您想要的填充【参考方案2】:

在 Swift 中:

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

【讨论】:

优雅的解决方案!,但我也很难为我的 uitexfield 设置背景图像(不是左视图,而是整个背景),你能告诉我怎么做吗?,很快。 要在图像上设置正确的边距/填充,首先创建一个尺寸比图像大一点的视图。并创建图像视图,在 UIView 中居中,将 UIImageView 添加到 UIView。现在最后一步是将此 UIView 设置为 .leftView。【参考方案3】:

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

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

【讨论】:

谢谢 Erhan,IMO 你的解决方案是最好和最短的!!!这对我帮助很大:) 欢迎您戴维特:)。真的,我很欣赏你的好声音:)【参考方案4】:

Swift 3.0

txtField.rightViewMode = .always
txtField.rightView = UIImageView(image: UIImage(named: "selectdrop"))

【讨论】:

【参考方案5】:

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

这里我的 TextField 的高度是 44 检查附件图片以供参考。

Swift 版本:

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

【讨论】:

【参考方案6】:

第 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 步:从界面生成器中设置文本插入和左图。

第 3 步:享受。

【讨论】:

您可以制作 UIImage 类型的 leftImage,这将为您提供一个不错的直接图像输入。【参考方案7】:

嘿,伙计,您想要下拉视图,然后查看此自定义下拉视图..

    http://code.google.com/p/dropdowndemo/downloads/list 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=自己; txtstate.text=@"水果"; txtstate.borderStyle = UITextBorderStyleNone; txtstate.background = [UIImage imageNamed:@"Arrow-Down-black-32.png"]; [txtstate setAutocorrectionType:UITextAutocorrectionTypeNo]; [self.view addSubview:txtstate];喜欢这样,但我也需要边框..我该怎么做? 你用哪个mate??意思是你使用这个自定义下拉菜单?? @arizah 你确实检查了下拉菜单的演示。我认为这是非常有用的家伙。如果你想加边框,我也给了很多类型的边框,然后我发布代码告诉我你现在需要代码?? 是的,我通过了...我明白了..谢谢 k mate 非常感谢你的话..我对其他概念有一些疑问..我可以得到你的邮件 ID 吗?【参考方案8】:

UITextField 具有以下属性:

@property(nonatomic, retain) UIImage *background

示例:

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

【讨论】:

是的,但我应该如何将此 uiimage 链接到文本字段?【参考方案9】:
      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

enter image description here

【讨论】:

嗨,欢迎来到 SO :)。你能在你的答案中添加更多细节吗?这将使您更容易理解您的解决方案。谢谢! 点击那个“在此输入图片描述”就可以理解了

以上是关于在 Xcode 中将图像添加到 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章

在 xcode 中将资源添加到游乐场

如何在 XCode 中将图像和文本放在相同的布局中

如何在swift ios中将多个图像添加到自定义表格视图单元格?

如何以编程方式在 Swift 中将 uiimageview 设置为 xcode 内置的 applewatch 图标图像?

在 Xcode 4 中将 GLM 添加到项目中

如何在 Xcode 5 中将新项目添加到源代码管理?