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

来源:互联网 发布:linux rhel6 root密码 编辑:程序博客网 时间:2024/05/29 09:52

设置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的属性值。
0 0
原创粉丝点击