转载

ios修改textField的placeholder的字体颜色大小

前言

设置UITextField的placeholder的颜色代码片段:

  textField.placeholder = @"username is in here!";   [textFieldsetValue:[UIColor redColor]forKeyPath:@"_placeholderLabel.textColor"];   [textFieldsetValue:[UIFontboldSystemFontOfSize:16]forKeyPath:@"_placeholderLabel.font"];     

或者直接在iOS6.0之后提供的attributedPlaceholder属性:

  UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; NSString *holderText = @"标哥的技术博客"; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc]initWithString:holderText]; [placeholderaddAttribute:NSForegroundColorAttributeName                   value:[UIColor redColor]                   range:NSMakeRange(0, holderText.length)]; [placeholderaddAttribute:NSFontAttributeName                   value:[UIFontboldSystemFontOfSize:16]                   range:NSMakeRange(0, holderText.length)]; textField.attributedPlaceholder = placeholder; [cell.contentViewaddSubview:textField];   

与上面那段代码是一样的效果。

_placeholderLabel说明

  (lldb) po [textFieldvalueForKey:@"_placeholderLabel"] <UITextFieldLabel: 0x13fe835f0; frame = (0 0; 0 0); text = '标哥的技术博客'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x13fe855f0>>   

其实_placeholderLabel就是UITextFieldLabel类型,这是在有placeholder的情况下打印出来的,但是为什么知道内部叫/ _placeholderLabel呢?根据苹果的命名规范,猜测出来的,然后测试能否获取到。这不算私有API,这是通过KVC获取的,虽然苹果并不希望我们这么做,但是可以正常上架(笔者在很多个App里使用过)。

说明

  • iOS6.0之后,有attributedPlaceholder属性,因此可以直接通过它设置。
  • 在iOS6.0之前,可以通过KVC来设置_placeholderLabel的属性值。

关注我

关注 账号 备注
标哥博客iOS交流群一 324400294(满) 群一若已满,请申请群二
标哥博客iOS交流群二 494669518(满) 群二若已满,请申请群三
标哥博客iOS交流群三 461252383(满) 群三若已满,请申请群四
标哥博客iOS交流群四 250351140 群四若已满,会有提示信息
关注微信公众号 iOSDevShares 关注微信公众号,会定期地推送好文章
关注新浪微博账号 标哥的技术博客 关注微博,每次发布文章都会分享到新浪微博
关注标哥的GitHub CoderJackyHuang 这里有很多的Demo和开源组件
关于我 进一步了解标哥 如果觉得文章对您很有帮助,可捐助我!
原文  http://www.henishuo.com/textfield-placeholder/
正文到此结束
Loading...