当前位置: 首页 > 编程笔记 >

iOS改变UITextField占位文字颜色的三种方法

樊腾
2023-03-14
本文向大家介绍iOS改变UITextField占位文字颜色的三种方法,包括了iOS改变UITextField占位文字颜色的三种方法的使用技巧和注意事项,需要的朋友参考一下

有时,UITextField自带的占位文字的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改占位文字的颜色,所以只能通过其他间接方式去修改。

例如:系统默认的占位文字颜色太浅

需要加深颜色,或者改变颜色
示例:

核心代码

方法一:通过attributedPlaceholder属性修改占位文字颜色


 CGFloat viewWidth = self.view.bounds.size.width;
 CGFloat textFieldX = 50;
 CGFloat textFieldH = 30;
 CGFloat padding = 30;

 UITextField *textField = [[UITextField alloc] init];
 textField.frame = CGRectMake(textFieldX, 100, viewWidth - 2 * textFieldX, textFieldH);
 textField.borderStyle = UITextBorderStyleRoundedRect; // 边框类型
 textField.font = [UIFont systemFontOfSize:14];
 NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"请输入占位文字" attributes:
 @{NSForegroundColorAttributeName:[UIColor redColor],
     NSFontAttributeName:textField.font
   }];
 textField.attributedPlaceholder = attrString;
 [self.view addSubview:textField];

方法二:通过KVC修改占位文字颜色

 UITextField *textField1 = [[UITextField alloc] init];
 textField1.frame = CGRectMake(textFieldX, CGRectGetMaxY(textField.frame) + padding, viewWidth - 2 * textFieldX, textFieldH);
 textField1.borderStyle = UITextBorderStyleRoundedRect;
 textField1.placeholder = @"请输入占位文字";
 textField1.font = [UIFont systemFontOfSize:14];
 // "通过KVC修改占位文字的颜色"
 [textField1 setValue:[UIColor greenColor] forKeyPath:@"_placeholderLabel.textColor"];
 [self.view addSubview:textField1];

方法三:通过重写UITextField的drawPlaceholderInRect:方法修改占位文字颜色

1、自定义一个TextField继承自UITextField
2、重写drawPlaceholderInRect:方法
3、在drawPlaceholderInRect方法中设置placeholder的属性

// 重写此方法
-(void)drawPlaceholderInRect:(CGRect)rect {
 // 计算占位文字的 Size
 CGSize placeholderSize = [self.placeholder sizeWithAttributes:
        @{NSFontAttributeName : self.font}];

 [self.placeholder drawInRect:CGRectMake(0, (rect.size.height - placeholderSize.height)/2, rect.size.width, rect.size.height) withAttributes:
 @{NSForegroundColorAttributeName : [UIColor blueColor],
     NSFontAttributeName : self.font}];
}

总结:

1、当我们使用纯代码创建UITextField时,用第二种方法(KVC)修改占位文字颜色是最便捷的
2、当我们使用XIB或者Storyboard创建UITextField时,通过自定义UITextField,修改占位文字颜色是最适合的。
3、我们也可以在第三种重写方法中,通过结合第二种方法中的KVC修改属性来实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍总结iOS实现渐变颜色的三种方法,包括了总结iOS实现渐变颜色的三种方法的使用技巧和注意事项,需要的朋友参考一下 在iOS开发过程中有的时候会需要用到渐变的颜色,这篇文章总结了三种方法来实现,有需要的朋友们下面来一起看看吧。 一、CAGradientLayer实现渐变 CAGradientLayer是CALayer的一个特殊子类,用于生成颜色渐变的图层,使用较为方便 下面介绍下它的相

  • 问题内容: 我有一个实现深蓝色的设计,因为默认情况下,占位符文本为深灰色,所以我几乎无法分辨出占位符文本的含义。 我已经用谷歌搜索了这个问题,但是我还没有想出使用Swift语言而不是Obj-c的解决方案。 有没有一种方法可以使用Swift 更改占位符文本的颜色? 问题答案: 您可以使用 属性字符串 设置占位符文本。通过:传递所需的颜色: 对于Swift 3+,请使用以下命令: 对于Swift 4.

  • 我有一个实现深蓝色的设计,因为占位符文本默认是深灰色,我几乎看不出占位符文本说了什么。 当然,我已经在谷歌上搜索了这个问题,但我还没有找到一个解决方案,因为我使用的是Swift语言,而不是Obj-c。 有没有办法使用Swift更改中占位符文本颜色?

  • 问题内容: 我想更改TextField的占位符颜色,但是找不到它的方法。 我尝试设置和,但它不会更改占位符的颜色。 这是代码: 也许还没有API? 问题答案: 目前还没有api。 但您可以 : 自己使用和实现占位符: 现在,您可以像老板一样使用任何类型的编辑。 -自定义TextField 您总是可以创建自己的custom,以在所有地方使用: 用法 (带占位符):

  • 本文向大家介绍IOS 改变键盘颜色代码,包括了IOS 改变键盘颜色代码的使用技巧和注意事项,需要的朋友参考一下 IOS 改变键盘颜色的代码 iPhone和iPod touch的键盘颜色其实是可以通过代码更改的,这样能更匹配App的界面风格,下面是改变iPhone键盘颜色的代码。 1、只有Number Pad和Phone Pad这两种数字键盘才有效果 2、设置Appearance为Alert 以上所

  • 本文向大家介绍Android开发改变字体颜色方法,包括了Android开发改变字体颜色方法的使用技巧和注意事项,需要的朋友参考一下 在TextView中添加文本时有时会改变一些文本字体的颜色,今天主要分享三种实现方法及相关优缺点。 1、通过html标签改变文本颜色 点评:通过Html.fromHtml()方法就可以在字符串中使用html的标签,通过font标签可以改变字体的格式。麦子学院-国内最专