设置 UITextField 的占位符的颜色和光标颜色

这是在 UITextField 类中
/**

    运行时 :runtime
    可以访问隐藏的一些属性

 */

+ (void)initialize
{
    [self getIvars];
    [self getProperties];
}

//获取所有属性
+ (void)getProperties
{
    unsigned int count = 0;

    objc_property_t *properties = class_copyPropertyList([UITextField class], &count);
    for (int i = 0; i < count; i++) {
        objc_property_t property = properties[i];
        NSLog(@"%s  <---->  %s",property_getName(property), property_getAttributes(property));
    }

}

//获取所有成员变量列表
+ (void)getIvars
{
    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]; //等同上一句代码
        NSLog(@"%s",ivar_getName(ivar));
    }
    //释放内存 因为带有 copy
    free(ivars);
}

//视图加载出来时
- (void)awakeFromNib
{
//    UILabel *placeHolderLabel = [self valueForKey:@"_placeholderLabel"];
//    placeHolderLabel.textColor = [UIColor redColor];

//通过 kvc 赋值
//    [self setValue:[UIColor orangeColor] forKeyPath:@"_placeholderLabel.textColor"];
//设置光标颜色和文字颜色一致

    self.tintColor = self.textColor;
    [self resignFirstResponder];

}

//文本框成为第一响应者 和放弃 时 设置文本框的 占位符的颜色
- (BOOL)becomeFirstResponder
{
    [self setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
    return [super becomeFirstResponder];
}

- (BOOL)resignFirstResponder
{
    [self setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
    return [super resignFirstResponder];
}

//外界可以通过访问这个属性 进行赋值
- (void)setPlaceHolderColor:(UIColor *)placeHolderColor
{
    _placeHolderColor = placeHolderColor;
    [self setValue:placeHolderColor forKeyPath:@"_placeholderLabel.textColor"];

}

 

转载于:https://www.cnblogs.com/arenouba/p/5428795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值