runtime-运行时动态添加占位文字颜色-UITextField

原创 2016年05月11日 16:16:05

帮助大家更好的理解运行时动态方法, 这里能设定成一个UITextFied的分类,以后调用这个分类 就能很灵活的在任何地方改变占位文字的颜色了

特点:

1.取出系统的私有变量
2.运行时动态改变颜色
3.运行时交换方法

这里.h文件


@interface UITextField (PlaceHolder)

@property UIColor*  placeholderColor;

@end

/*********************************************/
下面.m文件
#import <objc/message.h>

@implementation UITextField (PlaceHolder)

//开始就进行方法交换
+(void)load{


    //获取自己设定的 setKn_PlaceHolder 方法
    Method setKn_PlaceholderMehtod = class_getInstanceMethod(self, @selector(setKn_PlaceHolder:));

    //获取自己设定的 系统的 setPlaceholder 方法
    Method setPlaceholderMethod = class_getInstanceMethod(self, @selector(setPlaceholder:));

    //对2个方法进行交换
    method_exchangeImplementations( setKn_PlaceholderMehtod, setPlaceholderMethod);

   //交换方法后 setKn_PlaceHolder 就变成 setPlaceholder
   //交换方法后 setPlaceholder    就变成 setKn_PlaceHolder
}

//先设置一个有这样功能的方法
-(void)setKn_PlaceHolder:(NSString *) placeholder{

    //开始用系统的 设置占位文字
//    [self setPlaceholder:placeholder];


    //交换方法后 setPlaceholder    就变成 setKn_PlaceHolder
    //所以用setKn_PlaceHolder
    [self setKn_PlaceHolder:placeholder];

    //设置占位文字颜色
    [self setPlaceholderColor:self.placeholderColor];

}

-(void)setPlaceholderColor:(UIColor *)placeholderColor{

    //先保存占位文字的颜色
    objc_setAssociatedObject(self, @"placeholderColor", placeholderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

    //用到的时候在给他


    //获取自带的私有控件,取出系统私有属性
    UILabel *placeholderLabel=[self valueForKey:@"placeholderLabel"];

    //设置颜色
    placeholderLabel.textColor=placeholderColor;
}

-(UIColor *)placeholderColor{

    //取用的时候把颜色给他
    return objc_getAssociatedObject(self, @"placeholderColor");
}

@end

我是KNSky,愿您每天开心 ^_^

相关文章推荐

UITextField-修改占位文字和光标的颜色,大小

一.设置占位文字的颜色 方法一:利用富文本 /** 手机号输入框 */ @property (weak, nonatomic) IBOutlet UITextField *phoneTextFie...

怎么利用runtime来改变文本框占位文字的颜色?

在iOS开发中,我们会遇到各种各样的问题,比如:文本框占位文字颜色的问题,今天在网上查询相关资料的时候,刚好看到了这么一篇文章,个人感觉很不错、很实用,分享出来,希望遇到类似功能实现问题的童鞋也有所参...

iOS在分类中添加属性,运行时编程,objc runtime 动态增加属性

Objective-C中,有类别可以在不修改源码的基础上增加方法;近排在看别人的开源代码时,发现还可以动态增加属性。而且是在运行时,太牛B了。 使用运行时库,必须要先引入 objc/runtim...

1.OC语言Swift特性,动态运行时,runtime,KVC ,KVO,MVC 设计模式

1.Objective-C语言特性 2.static __block const 3.Object-C的内存管理 4.RunLoop 5.iOS消息传递机制 6.iOS程序生命周期 7.MVC设计模式...
  • wild6
  • wild6
  • 2015年05月04日 14:22
  • 744

iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)

转自:http://www.cnblogs.com/wengzilin/p/4344952.html?utm_source=tuicool OC是运行时语言,只有在程序运行时,才会去确定对象的...

runtime浅谈(一)动态运行时和消息机制

最近听周围的朋友在讨论runtime,索性来研究一下,runtime是什么,原理又是什么。 总的来讲,runtime简称运行时,就是系统在运行的时候的一些机制,其中最主要的是消息机制。 它实...

UITextField(限制文字输入,调整光标,内容,占位文字显示的位置,以及基本使用)

一:UITextField单行文本内容限制文字输入 实现代码如下:    @interface ZYJEditNickNameViewController (){     UIButton *sav...

iOS运行时(runtime)示例代码

  • 2016年08月25日 18:58
  • 266KB
  • 下载

VB运行时动态注册添加控件的方法

其实我不想写关于此类方法的文章,但是提问者还是不少,因此我还是写出来,发链接算了   VB中的控件都是指ActiveX DLL或OCX,这些都是COM组件,如果熟悉API可以调用这个文件输出的注册...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:runtime-运行时动态添加占位文字颜色-UITextField
举报原因:
原因补充:

(最多只允许输入30个字)