【iOS】UITextView实现placeHolder占位文字最简单的方法
2018-02-07 13:24
417 查看
此方法适用于IOS8之后.
通过runtime,我们发现,UITextView内部有一个名为“_placeHolderLabel”的私有成员变量。大家知道,Objective-C没有绝对的私有变量,因为我们可以通过KVC来访问私有变量。
特点:虽然Apple官方没有给我们开发者提供类似于placeholder的属性,但是通过运行时,我们遍历出了一个placeHolderLabel的私有变量。这种方法简单易懂,代码量少,推荐大家使用这种方法。
所以我们只需以下方式就可以给textView添加placeholder
通过runtime,我们发现,UITextView内部有一个名为“_placeHolderLabel”的私有成员变量。大家知道,Objective-C没有绝对的私有变量,因为我们可以通过KVC来访问私有变量。
特点:虽然Apple官方没有给我们开发者提供类似于placeholder的属性,但是通过运行时,我们遍历出了一个placeHolderLabel的私有变量。这种方法简单易懂,代码量少,推荐大家使用这种方法。
#import "ViewController.h" #import <objc/runtime.h> #import <objc/message.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 通过运行时,发现UITextView有一个叫做“_placeHolderLabel”的私有变量 unsigned int count = 0; Ivar *ivars = class_copyIvarList([UITextView class], &count); for (int i = 0; i < count; i++) { Ivar ivar = ivars[i]; const char *name = ivar_getName(ivar); NSString *objcName = [NSString stringWithUTF8String:name]; NSLog(@"%d : %@",i,objcName); } } @end
所以我们只需以下方式就可以给textView添加placeholder
- (void)setupTextView { UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 100]; [textView setBackgroundColor:[UIColor greenColor]]; [self.view addSubview:textView]; // _placeholderLabel UILabel *placeHolderLabel = [[UILabel alloc] init]; placeHolderLabel.text = @"请输入内容"; placeHolderLabel.numberOfLines = 0; placeHolderLabel.textColor = [UIColor lightGrayColor]; [placeHolderLabel sizeToFit]; [textView addSubview:placeHolderLabel];//这句很重要不要忘了 // same font textView.font = [UIFont systemFontOfSize:13.f]; placeHolderLabel.font = [UIFont systemFontOfSize:13.f]; [textView setValue:placeHolderLabel forKey:@"_placeholderLabel"]; }
相关文章推荐
- 【IOS】UITextView实现placeHolder占位文字最简单的方法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- iOS开发:UITextView实现placeHolder占位文字的N种方法
- iOS 史上最全的 UITextView 实现 placeHolder 占位文字 的N种方法
- iOS之UITextView实现placeHolder占位文字的最佳方法
- iOS之UITextView 实现占位符占位文字的Ñ种方法
- [置顶] iOS史上最全的UITextView实现placeHolder占位文字的N种方法
- iOS UITextView的PlaceHolder 占位文字的实现
- iOS之UITextView实现placeHolder占位文字
- iOS-自定义TextView的方法,可以设置占位文字(placeholder)又可滚动
- iOS-UITextView占位文字placeholder
- 0009-^^^^^ 让UITextView实现占位文字placeholder{不使用第三方}
- iOS UITextView 实现placeholder的方法
- 【IOS】最简单方法实现Cell文字高度自适应.
- UITextView 实现placeholder的方法
- 【iOS开发-113】在storyboard上用AutoLayout,纯代码实现AutoLayout布局方法以及简单动画
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)
- IOS动画的使用方法总结-下拉框的简单实现