用 RunTime 为 UITextView 设置占位文本并实时改变文本框占位文本的颜色
2017-09-26 16:13
281 查看
UITextView实现占位文本的方式有很多种,网上一搜一大把,,这里只介绍 最简单 的一种,如标题所述:用
RunTime为
UITextView设置占位文本并实时改变文本框占位文本的颜色。
对
RunTime不太了解的童鞋可以简单看下这篇文章:iOS开发之 - Runtime,懒得点击鼠标的话我这里也简单的说下,
Runtime 简称运行时,是苹果官方的一套比较底层的纯 C 语言 API, 用它可以做很多底层操作(比如访问隐藏的成员变量和方法)。
OK,足够了,接下来我们就抓紧时间来看看如何用 RunTime 为 UITextView 设置占位文本并实时改变文本框占位文本的颜色。。。
首先我们利用 RunTime 获取一下 UITextView 中一些隐藏的成员变量
- (void)viewDidLoad { [super viewDidLoad]; // 获取 UITextView 中所有的成员变量 unsigned int count = 0; Ivar *ivars = class_copyIvarList([UITextView class], &count); for (int i = 0; i < count; i ++) { Ivar ivar = ivars[i]; // ivar_getName(ivar) 意思是获取成员变量名字,如果想获得成员变量的类型用这个 ivar_getTypeEncoding(ivar) const char *name = ivar_getName(ivar); NSString *objcName = [NSString stringWithUTF8String:name]; NSLog(@" %d %@ ", i, objcName); } // 释放 free(ivars); }
打印结果如下(这里直接放截图)
![](http://upload-images.jianshu.io/upload_images/2665449-065666a1bd7773b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
UITextView 中的属性
从上面的截图中我们可以看出,打印的结果里有一个
placeHolderLabel的私有变量,即 UITextView 类内部有一个名为“_placeHolderLabel”的私有成员变量。那么就简单多了,我们现在就对这个私有变量进行操作。具体的步骤如下:
- (void)setupTextView { _textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 50, [UIScreen mainScreen].bounds.size.width, 200)]; _textView.delegate = self; _textView.tintColor = [UIColor whiteColor]; _textView.font = [UIFont systemFontOfSize:15.f]; _textView.backgroundColor =[UIColor grayColor]; [self.view addSubview:_textView]; UILabel *placeholderLabel = [[UILabel alloc] init]; placeholderLabel.text = @"请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容请输入内容"; placeholderLabel.font = [UIFont systemFontOfSize:15.f]; placeholderLabel.textColor = [UIColor whiteColor]; placeholderLabel.numberOfLines = 0; [placeholderLabel sizeToFit]; [_textView addSubview:placeholderLabel]; [_textView setValue:placeholderLabel forKey:@"_placeholderLabel"]; } 4000
上面代码做的事情,无非是创建一个 UITextView 和一个 UILabel 控件,然后通过键值对的原理给 UITextView 中的 _placeholderLabel 这一属性赋值,,,就不详细注释了,重要的是这种思想。。。只需上面这段代码,我们就已经完成了利用 RunTime 为 UITextView 设置占位文本。效果图如下,比较丑但很实用
相关文章推荐
- 怎么利用runtime来改变文本框占位文字的颜色?
- iphone中,在编辑文本时怎么设置UITextView的边框颜色?
- Win7系统下如何设置改变文本文档背景颜色
- 改变设置文本框占位文字和图片
- 自定义文本框占位颜色和runtime
- iOS使用runtime修改文本框(TextField)的占位文字颜色
- JS中文本框实时响应文本改变,不用等到失去焦点后
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮
- 对话框中设置静态文本框字体及颜色
- 设置TextView里的部分文本的颜色
- VC 编辑框 改变背景、字体、文本颜色、长度限制、英文 汉字判断收藏
- 改变对话框和控件的背景及文本颜色
- Qt 中 QLabel 自定义文本的颜色状态,设置为三种状态(类似于Qcheckbutton里面的checked unchecked)
- ios - 设置文本中不同字体颜色
- runtime查找 UIAlertAction 的key 及 UIActionSheet 设置字体颜色
- Flex中如何通过backgroundImage, backgroundColor和backgroundAlpha样式,设置VBox的背景图片和背景颜色以及改变透明度
- Windows Phone 中应用颜色设置改变主题的应用
- GDI:捕捉鼠标,实时改变矩形背景颜色。
- Direct2D (40) : 分别设置 IDWriteTextLayout 中文本的颜色