UITextField
UITextField displays editable text.
Example
Instructions
Create
- Open Xcode
- Click File
- Click New
- Click Project...
- Under iOS, click Application
- Click Single View Application
- Click Next
- After Product Name, type your product name
- After Organization Name, type your organization name or leave blank
- After Organization Identifier, type your organization identifier
- After Language, select Swift
- After Devices, select Universal
- Uncheck Use Core Data
- Click Next
- Select a folder
- After Source Control, uncheck Create Git repository on
- Click Create
Edit ViewController.swift
- Open ViewController.swift
- Copy and paste code
Edit Main.storyboard
- Open Main.storyboard
- Click View
- Click Utilities
- Click Show Object Library
- Drag Text Field to View
- Click View
- Click Utilities
- Click Show Connections Inspector
- Under Sent Events, after Did End On Exit, drag + to View Controller
- Click didEndOnExit:
- Under Referencing Outlets, after New Referencing Outlet, drag + to View Controller
- Click interfaceBuilderTextField
Add Images
- Click File
- Click Add Files to "UITextField" ...
- Select images
- After Destination, check Copy items if needed
- After Added folders, select Create groups
- After Add to targets, check UITextField
- Click Add
Run
- Click Product
- Click Run
Code
import UIKit class ViewController: UIViewController { @IBOutlet weak var interfaceBuilderTextField: UITextField! override func prefersStatusBarHidden() -> Bool { return true } override func viewDidLoad() { super.viewDidLoad() let image1 = UIImage(named: "HappyFace1") let image2 = UIImage(named: "HappyFace2") self.interfaceBuilderTextField.text = "Interface Builder" self.view.removeConstraints(self.view.constraints()) let adjustFontSizeToFitWidthTextField = UITextField() adjustFontSizeToFitWidthTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) adjustFontSizeToFitWidthTextField.adjustsFontSizeToFitWidth = true adjustFontSizeToFitWidthTextField.font = UIFont(name: "Times New Roman", size: 24) adjustFontSizeToFitWidthTextField.minimumFontSize = 12 adjustFontSizeToFitWidthTextField.setTranslatesAutoresizingMaskIntoConstraints(false) adjustFontSizeToFitWidthTextField.text = "Adjusts Font Size To Fit Width" self.view.addSubview(adjustFontSizeToFitWidthTextField) self.view.addConstraint(NSLayoutConstraint(item: adjustFontSizeToFitWidthTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.interfaceBuilderTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) self.view.addConstraint(NSLayoutConstraint(item: adjustFontSizeToFitWidthTextField, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 1/4, constant: 0)) let allowsEditingTextAttributesTextField = UITextField() allowsEditingTextAttributesTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) allowsEditingTextAttributesTextField.allowsEditingTextAttributes = true allowsEditingTextAttributesTextField.setTranslatesAutoresizingMaskIntoConstraints(false) allowsEditingTextAttributesTextField.text = "Allows Editing Text Attributes" self.view.addSubview(allowsEditingTextAttributesTextField) self.view.addConstraint(NSLayoutConstraint(item: allowsEditingTextAttributesTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: adjustFontSizeToFitWidthTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let attributedPlaceholderAttributedString = NSMutableAttributedString(string: "Attributed Placeholder") attributedPlaceholderAttributedString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.redColor(), range: NSMakeRange(0, 10)) attributedPlaceholderAttributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, 10)) attributedPlaceholderAttributedString.addAttribute(NSFontAttributeName, value: UIFont(name: "Times New Roman", size: 24)!, range: NSMakeRange(11, 11)) let attributedPlaceholderTextField = UITextField() attributedPlaceholderTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) attributedPlaceholderTextField.attributedPlaceholder = attributedPlaceholderAttributedString attributedPlaceholderTextField.setTranslatesAutoresizingMaskIntoConstraints(false) self.view.addSubview(attributedPlaceholderTextField) self.view.addConstraint(NSLayoutConstraint(item: attributedPlaceholderTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: allowsEditingTextAttributesTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let attributedTextAttributedString = NSMutableAttributedString(string: "Attributed Text") attributedTextAttributedString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.redColor(), range: NSMakeRange(0, 10)) attributedTextAttributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, 10)) attributedTextAttributedString.addAttribute(NSFontAttributeName, value: UIFont(name: "Times New Roman", size: 24)!, range: NSMakeRange(11, 4)) let attributedTextTextField = UITextField() attributedTextTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) attributedTextTextField.attributedText = attributedTextAttributedString attributedTextTextField.setTranslatesAutoresizingMaskIntoConstraints(false) self.view.addSubview(attributedTextTextField) self.view.addConstraint(NSLayoutConstraint(item: attributedTextTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: attributedPlaceholderTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) self.view.addConstraint(NSLayoutConstraint(item: attributedTextTextField, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0)) let backgroundTextField = UITextField() backgroundTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) backgroundTextField.background = image1 backgroundTextField.setTranslatesAutoresizingMaskIntoConstraints(false) backgroundTextField.text = "Background" self.view.addSubview(backgroundTextField) self.view.addConstraint(NSLayoutConstraint(item: backgroundTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: attributedTextTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let disabledBackgroundTextField = UITextField() disabledBackgroundTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) disabledBackgroundTextField.background = image1 disabledBackgroundTextField.disabledBackground = image2 disabledBackgroundTextField.enabled = false disabledBackgroundTextField.setTranslatesAutoresizingMaskIntoConstraints(false) disabledBackgroundTextField.text = "Disabled Background" self.view.addSubview(disabledBackgroundTextField) self.view.addConstraint(NSLayoutConstraint(item: disabledBackgroundTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: backgroundTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let borderStyleBezelTextField = UITextField() borderStyleBezelTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) borderStyleBezelTextField.borderStyle = UITextBorderStyle.Bezel borderStyleBezelTextField.setTranslatesAutoresizingMaskIntoConstraints(false) borderStyleBezelTextField.text = "Border Style Bezel" self.view.addSubview(borderStyleBezelTextField) self.view.addConstraint(NSLayoutConstraint(item: borderStyleBezelTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: disabledBackgroundTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let borderStyleLineTextField = UITextField() borderStyleLineTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) borderStyleLineTextField.borderStyle = UITextBorderStyle.Line borderStyleLineTextField.setTranslatesAutoresizingMaskIntoConstraints(false) borderStyleLineTextField.text = "Border Style Line" self.view.addSubview(borderStyleLineTextField) self.view.addConstraint(NSLayoutConstraint(item: borderStyleLineTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: borderStyleBezelTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let borderStyleNoneTextField = UITextField() borderStyleNoneTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) borderStyleNoneTextField.borderStyle = UITextBorderStyle.None borderStyleNoneTextField.setTranslatesAutoresizingMaskIntoConstraints(false) borderStyleNoneTextField.text = "Border Style None" self.view.addSubview(borderStyleNoneTextField) self.view.addConstraint(NSLayoutConstraint(item: borderStyleNoneTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: borderStyleLineTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let borderStyleRoundedRectTextField = UITextField() borderStyleRoundedRectTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) borderStyleRoundedRectTextField.borderStyle = UITextBorderStyle.RoundedRect borderStyleRoundedRectTextField.setTranslatesAutoresizingMaskIntoConstraints(false) borderStyleRoundedRectTextField.text = "Border Style Rounded Rect" self.view.addSubview(borderStyleRoundedRectTextField) self.view.addConstraint(NSLayoutConstraint(item: borderStyleRoundedRectTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: borderStyleNoneTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let clearButtonModeTextField = UITextField() clearButtonModeTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) clearButtonModeTextField.clearButtonMode = UITextFieldViewMode.Always clearButtonModeTextField.setTranslatesAutoresizingMaskIntoConstraints(false) clearButtonModeTextField.text = "Clear Button Mode" self.view.addSubview(clearButtonModeTextField) self.view.addConstraint(NSLayoutConstraint(item: clearButtonModeTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: borderStyleRoundedRectTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let clearsOnBeginEditingTextField = UITextField() clearsOnBeginEditingTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) clearsOnBeginEditingTextField.clearsOnBeginEditing = true clearsOnBeginEditingTextField.setTranslatesAutoresizingMaskIntoConstraints(false) clearsOnBeginEditingTextField.text = "Clears On Begin Editing" self.view.addSubview(clearsOnBeginEditingTextField) self.view.addConstraint(NSLayoutConstraint(item: clearsOnBeginEditingTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: clearButtonModeTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let clearsOnInsertionTextField = UITextField() clearsOnInsertionTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) clearsOnInsertionTextField.clearsOnInsertion = true clearsOnInsertionTextField.setTranslatesAutoresizingMaskIntoConstraints(false) clearsOnInsertionTextField.text = "Clears On Insertion" self.view.addSubview(clearsOnInsertionTextField) self.view.addConstraint(NSLayoutConstraint(item: clearsOnInsertionTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: clearsOnBeginEditingTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let defaultTextAttributesTextField = UITextField() defaultTextAttributesTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) defaultTextAttributesTextField.defaultTextAttributes = NSDictionary(objectsAndKeys: UIFont(name: "Times New Roman", size: 24)!, NSFontAttributeName, UIColor.whiteColor(), NSForegroundColorAttributeName, UIColor.redColor(), NSBackgroundColorAttributeName) defaultTextAttributesTextField.setTranslatesAutoresizingMaskIntoConstraints(false) defaultTextAttributesTextField.text = "Default Text Attributes" self.view.addSubview(defaultTextAttributesTextField) self.view.addConstraint(NSLayoutConstraint(item: defaultTextAttributesTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: clearsOnInsertionTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let fontTextField = UITextField() fontTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) fontTextField.font = UIFont(name: "Times New Roman", size: 24) fontTextField.setTranslatesAutoresizingMaskIntoConstraints(false) fontTextField.text = "Font" self.view.addSubview(fontTextField) self.view.addConstraint(NSLayoutConstraint(item: fontTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: defaultTextAttributesTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let inputAccessoryViewImageView = UIImageView(image: image1) let inputAccessoryViewTextField = UITextField() inputAccessoryViewTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) inputAccessoryViewTextField.inputAccessoryView = inputAccessoryViewImageView inputAccessoryViewTextField.setTranslatesAutoresizingMaskIntoConstraints(false) inputAccessoryViewTextField.text = "Input Accessory View" self.view.addSubview(inputAccessoryViewTextField) self.view.addConstraint(NSLayoutConstraint(item: inputAccessoryViewTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: fontTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let inputViewImageView = UIImageView(image: image1) let inputViewTextField = UITextField() inputViewTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) inputViewTextField.inputView = inputViewImageView inputViewTextField.setTranslatesAutoresizingMaskIntoConstraints(false) inputViewTextField.text = "Input View" self.view.addSubview(inputViewTextField) self.view.addConstraint(NSLayoutConstraint(item: inputViewTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: inputAccessoryViewTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let leftViewImageView = UIImageView(image: image1) let leftViewTextField = UITextField() leftViewTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) leftViewTextField.leftView = leftViewImageView leftViewTextField.leftViewMode = UITextFieldViewMode.Always leftViewTextField.setTranslatesAutoresizingMaskIntoConstraints(false) leftViewTextField.text = "Left View" self.view.addSubview(leftViewTextField) self.view.addConstraint(NSLayoutConstraint(item: leftViewTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: inputViewTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let rightViewImageView = UIImageView(image: image1) let rightViewTextField = UITextField() rightViewTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) rightViewTextField.rightView = rightViewImageView rightViewTextField.rightViewMode = UITextFieldViewMode.Always rightViewTextField.setTranslatesAutoresizingMaskIntoConstraints(false) rightViewTextField.text = "Right View" self.view.addSubview(rightViewTextField) self.view.addConstraint(NSLayoutConstraint(item: rightViewTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: leftViewTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let minimumFontSizeTextField = UITextField() minimumFontSizeTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) minimumFontSizeTextField.adjustsFontSizeToFitWidth = true minimumFontSizeTextField.font = UIFont(name: "Times New Roman", size: 24) minimumFontSizeTextField.minimumFontSize = 12 minimumFontSizeTextField.setTranslatesAutoresizingMaskIntoConstraints(false) minimumFontSizeTextField.text = "Minimum Font Size" self.view.addSubview(minimumFontSizeTextField) self.view.addConstraint(NSLayoutConstraint(item: minimumFontSizeTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: rightViewTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) self.view.addConstraint(NSLayoutConstraint(item: minimumFontSizeTextField, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 1/4, constant: 0)) let placeholderTextField = UITextField() placeholderTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) placeholderTextField.placeholder = "Placeholder" placeholderTextField.setTranslatesAutoresizingMaskIntoConstraints(false) self.view.addSubview(placeholderTextField) self.view.addConstraint(NSLayoutConstraint(item: placeholderTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: minimumFontSizeTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let textTextField = UITextField() textTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) textTextField.setTranslatesAutoresizingMaskIntoConstraints(false) textTextField.text = "Text" self.view.addSubview(textTextField) self.view.addConstraint(NSLayoutConstraint(item: textTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: placeholderTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let textAlignmentTextField = UITextField() textAlignmentTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) textAlignmentTextField.setTranslatesAutoresizingMaskIntoConstraints(false) textAlignmentTextField.text = "Text Alignment" textAlignmentTextField.textAlignment = NSTextAlignment.Right self.view.addSubview(textAlignmentTextField) self.view.addConstraint(NSLayoutConstraint(item: textAlignmentTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: textTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) self.view.addConstraint(NSLayoutConstraint(item: textAlignmentTextField, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0)) let textColorTextField = UITextField() textColorTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) textColorTextField.setTranslatesAutoresizingMaskIntoConstraints(false) textColorTextField.text = "Text Color" textColorTextField.textColor = UIColor.redColor() self.view.addSubview(textColorTextField) self.view.addConstraint(NSLayoutConstraint(item: textColorTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: textAlignmentTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) let typingAttributesTextField = UITextField() typingAttributesTextField.addTarget(self, action: "didEndOnExit:", forControlEvents: UIControlEvents.EditingDidEndOnExit) typingAttributesTextField.addTarget(self, action: "editingDidBegin:", forControlEvents: UIControlEvents.EditingDidBegin) typingAttributesTextField.defaultTextAttributes = NSDictionary(objectsAndKeys: UIFont(name: "Times New Roman", size: 24)!, NSFontAttributeName, UIColor.whiteColor(), NSForegroundColorAttributeName, UIColor.redColor(), NSBackgroundColorAttributeName) typingAttributesTextField.setTranslatesAutoresizingMaskIntoConstraints(false) typingAttributesTextField.text = "Typing Attributes" self.view.addSubview(typingAttributesTextField) self.view.addConstraint(NSLayoutConstraint(item: typingAttributesTextField, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: textColorTextField, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)) } @IBAction func didEndOnExit(sender: UITextField!) { sender.resignFirstResponder() } func editingDidBegin(sender: UITextField!) { sender.typingAttributes = NSDictionary(objectsAndKeys: UIFont(name: "Times New Roman", size: 24)!, NSFontAttributeName, UIColor.whiteColor(), NSForegroundColorAttributeName, UIColor.greenColor(), NSBackgroundColorAttributeName) } }