您的位置:首页 > 产品设计 > UI/UE

修改UITextField的placeholder颜色

2016-06-16 10:08 543 查看
```objc

@property(nonatomic,copy)   NSAttributedString     *attributedPlaceholder;

// 文字属性

NSMutableDictionary *attrs = [NSMutableDictionary dictionary];

attrs[NSForegroundColorAttributeName] = [UIColor grayColor];

// NSAttributedString :
带有属性的文字(富文本技术)

NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"手机号" attributes:attrs];

self.phoneField.attributedPlaceholder = placeholder;

NSMutableAttributedString *placehoder = [[NSMutableAttributedString alloc] initWithString:@"手机号"];

[placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} range:NSMakeRange(0, 1)];

[placehoder setAttributes:@{

                            NSForegroundColorAttributeName : [UIColor yellowColor],

                            NSFontAttributeName : [UIFont systemFontOfSize:30]

                            } range:NSMakeRange(1, 1)];

[placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} range:NSMakeRange(2, 1)];

self.phoneField.attributedPlaceholder = placehoder;

```

- 重写方法

```objc

- (void)drawPlaceholderInRect:(CGRect)rect

{

    [self.placeholder drawInRect:CGRectMake(0, 10, rect.size.width, 25) withAttributes:@{

                                                       NSForegroundColorAttributeName : [UIColor grayColor],

                                                       NSFontAttributeName : self.font}];

}

```

- 使用KVC

```objc

[self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];

```

## 运行时(Runtime)

- 苹果官方一套C语言库

- 能做很多底层操作(比如访问隐藏的一些成员变量\成员方法....)

- 访问成员变量举例

```objc

unsigned int count = 0;

// 拷贝出所有的成员变量列表

Ivar *ivars = class_copyIvarList([UITextField class], &count);

for (int i = 0; i<count; i++) {

    // 取出成员变量

    // Ivar ivar = *(ivars + i);

    Ivar ivar = ivars[i];

    // 打印成员变量名字

    XMGLog(@"%s", ivar_getName(ivar));

}

// 释放

free(ivars);

```
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios