Changing the Placeholder Text Color in iOS UITextField

Changing the Placeholder Text Color in iOS UITextField

6 June 2024 Stephan Petzl Leave a comment Tech-Help

Customizing the appearance of UITextField placeholder text can enhance the user experience of your iOS application. In this guide, we will cover how to change the placeholder text color in UITextField using various methods, ensuring compatibility with different iOS versions.

Using Attributed Strings

Since iOS 6, UITextField supports attributed strings, allowing you to easily change the placeholder text color. Here’s a straightforward method:

if ([textField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
  UIColor *color = [UIColor blackColor];
  textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Placeholder Text" attributes:@{NSForegroundColorAttributeName: color}];
} else {
  NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0");
  // TODO: Add fall-back code to set placeholder color.

Alternative Methods

Depending on your project requirements and iOS version compatibility, you may consider the following alternative methods:

Using Swift

For Swift developers, here’s how you can achieve the same result:

Swift 3

myTextField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [NSForegroundColorAttributeName:])

Swift 4

myTextField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [NSAttributedStringKey.foregroundColor:])

Swift 4.2 and Above

myTextField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [NSAttributedString.Key.foregroundColor:])

Using Objective-C

If you are working with Objective-C, here is a method to change the placeholder text color:

UIColor *color = [UIColor lightTextColor];
YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];

Storyboard Approach

For those who prefer setting attributes directly in Storyboard, you can create an extension:

Swift 5 Version

extension UITextField {
    @IBInspectable var placeholderColor: UIColor {
        get {
            return attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor ?? .clear
        set {
            guard let attributedPlaceholder = attributedPlaceholder else { return }
            let attributes: [NSAttributedString.Key: UIColor] = [.foregroundColor: newValue]
            self.attributedPlaceholder = NSAttributedString(string: attributedPlaceholder.string, attributes: attributes)


Changing the placeholder text color in a UITextField is a relatively simple task that can significantly improve the visual appeal of your app. Depending on your development environment and target iOS version, you can choose the method that best fits your needs.

Enhancing Mobile App Testing with Repeato

While customizing your app, it’s crucial to ensure that all features work as expected. This is where automated testing tools like Repeato come into play. Repeato is a no-code test automation tool for iOS and Android, which allows you to create, run, and maintain automated tests for your apps efficiently.

With Repeato, you can focus on developing new features while ensuring that your app’s UI behaves as expected across different scenarios. Its computer vision and AI-based approach make it particularly fast and easy to use, even for non-technical team members.

Learn more about how Repeato can help streamline your mobile app testing process by visiting our documentation or contacting us.

Like this article? there’s more where that came from!