运用一下 Runtime 修改文本框占位符的颜色

/**

    运行时 :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"];

}
时间: 2024-10-24 18:35:07

运用一下 Runtime 修改文本框占位符的颜色的相关文章

iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮

一.登录模块的布局 将一整部分切割成若干部分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置placeholder的NSAttributeString来设置文字属性 方法二效果图: <2>第三种方法是通过RunTime找到隐藏的可以设置placeholder颜色的属性,通过KVC来赋值.RunTime会单独拿出来讲 三.按钮自定义,重新排列子控件的排列位置

Placeholdem文本域占位符符号标识JavaScript插件

Placeholdem是文本域占位符符号标识的一个JavaScript插件.占位符的值将逐步删除焦点文字,并在焦点离开逐步恢复. 在线demo:http://placeholdem.jackrugile.com/ 下载地址:https://github.com/jackrugile/placeholdem

在PowerPoint中自定义可输入文本的占位符

日常生活中,当我们设计多媒体课件时,默认的版式其实已经够用了.但是,很多时候,我们需要更加个性一点,所以,我们需要自定义很多东西.本文介绍在PowerPoint中自定义可输入文本的占位符. 一.占位符的概念 占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号. 二.PowerPoint(简称:PPT)简介 ppt,是演示文稿软件.演示文稿中的每一页就叫幻灯片,每张幻灯片都是演示文稿中既相互独立又相互联系的内容.我们这里要做的就是,给每一张幻灯片都加上占位符. 三.在幻灯片母版中加入占位

UITextField 占位符的颜色及光标颜色(及如何学习新知识)

一. 设置光标的颜色 1.如何是xib或storyBoard在设置控件属性找有没有有关颜色的属性(找到了backgroundColor,TextColor,还有一个是tintColor),这样就排除了前两个,试下tintColor,果然有效. 2.如何是用代码写的,可以在UITextField中找相关color,如果没有我们要的属性在父类里找或父类的父类中找,这时找到了这个tintColor. 二.设置点位符的颜色 方法1: 1.因为上面已经找过了没有其它跟颜色相关的属性了,这时我们在UITex

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

这是在 UITextField 类中 /** 运行时 :runtime 可以访问隐藏的一些属性 */ + (void)initialize { [self getIvars]; [self getProperties]; } //获取所有属性 + (void)getProperties { unsigned int count = 0; objc_property_t *properties = class_copyPropertyList([UITextField class], &count

spinner 设置文本框中的字体颜色

onItemSelected(AdapterView parent, View v, int position, long id) { TextView v1 = (TextView)v; v1.setTextColor(Color.WHITE); //可以随意设置自己要的颜色值 } 本文转自:http://bbs.csdn.net/topics/350049938 spinner 设置文本框中的字体颜色

改变设置文本框占位文字和图片

如果我们想实现这种效果,点击相应的文本,占位文字显示高亮 ,而其他文本框非高亮 相应代码 #import <UIKit/UIKit.h> @interface XMGTextField : UITextField /** 颜色 */ @property(nonatomic,strong)UIColor *placeholderColor; @end #import "XMGTextField.h" #import <objc/runtime.h> static

百思不得姐第4天:文本框占位文字颜色

一:设置登录界面和注册界面的切换 #import "CQLoginViewController.h" #import "CQCustomTextField.h" @interface CQLoginViewController () @property (weak, nonatomic) IBOutlet NSLayoutConstraint *centerTopConstraints; @property (weak, nonatomic) IBOutlet UI

完整修改删除,占位符防治字符串攻击

完整修改删除相对于修改删除就是在修改删除之前先进性判断是否有要进行操作的对象,如果有再进行修改或者删除.也就是在修改删除之前先进行查询. 以修改为例 static void Main(string[] args) { bool has = false;//定义一个变量判断是否有该对象 Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); SqlConnection conn = new SqlConnectio