iOS中UITextView的_placeholderLabel私有属性的坑

UITextField有placeholderLabel属性,而UITextView却没有,不过幸好iOS中有KVC和UITextView的私有属性_placeholderLabel。
不过许多时候设置UITextView的_placeholderLabel却达不到预想的效果。
这里列一下这里的坑。

    _textView = [UITextView new];

  // 1、取消首字母自动大些。
    _textView.autocapitalizationType = UITextAutocapitalizationTypeNone;
  // 2、取消自动跟修正输入
    _textView.autocorrectionType = UITextAutocorrectionTypeNo;
  // 3、这里是第3个坑
     _textView.font = [UIFont systemFontOfSize:14];
    _textView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:_textView];
    [_textView makeConstraints:^(MASConstraintMaker *make) {
        make.center.equalTo(self.view);
        make.size.equalTo(CGSizeMake(200, 200));
    }];
    
    _placeholderLabel = [UILabel new];
    _placeholderLabel.numberOfLines = 0;  
  // 3、textView和placeholderLabel的字体必须一样!!!否则placeholderLabel会超出textView界限。
    _placeholderLabel.font = [UIFont systemFontOfSize:14];
    _placeholderLabel.textColor = [UIColor lightGrayColor];
    [_placeholderLabel sizeToFit];
  // 4、placeholderLabel必须加在textView上,否则涂层中根本不会有
    [_textView addSubview:_placeholderLabel];
    _placeholderLabel.text = @"不就是比较好的办法就是不会见风使舵";
  
  // 5、老的系统肯定不支持这个私有变量,所以加一个容错处理。
   @try {
        [_textView setValue:_placeholderLabel forKey:@"_placeholderLabel"];
    } @catch (NSException *exception) {} @finally {}

你可能感兴趣的:(iOS中UITextView的_placeholderLabel私有属性的坑)