zoukankan      html  css  js  c++  java
  • 利用Runtime给UITextView添加占位符(新方法)

     以前一直使用自定义UITextView通过通知中心来自定义placeHolder,最近看到这个方法,感觉更好

     

        UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(0100, [UIScreen mainScreen].bounds.size.width100)];

        [textView setBackgroundColor:[UIColor greenColor]];

        textView.font = [UIFont systemFontOfSize:14];

        [self.view addSubview:textView];

     

        UILabel *placeHolderLabel = [[UILabel allocinit];

        placeHolderLabel.text = @"请输入内容";

        placeHolderLabel.numberOfLines = 0;

        placeHolderLabel.textColor = [UIColor lightGrayColor];

        placeHolderLabel.font = [UIFont systemFontOfSize:14];

        [placeHolderLabel sizeToFit];

        

        [textView addSubview:placeHolderLabel];

     

        [textView setValue:placeHolderLabel forKey:@"_placeholderLabel"];

     

    因为KVC的底层是Runtime实现的,通过Rumtime发现UITextView内部有一个名为“_placeHolderLabel”的私有成员变量

    可以Runtime打印出UITextView的属性

     

       unsigned int count;

        

        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);

        }

  • 相关阅读:
    MPlayer源代码分析
    洛谷 P1025 数的划分
    洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair
    洛谷 P1744 采购特价商品
    洛谷 P1443 马的遍历
    洛谷 P1294 高手去散步
    洛谷 P2104 二进制
    洛谷 P1088 火星人
    洛谷 P1062 数列
    洛谷 P2005 A/B Problem II
  • 原文地址:https://www.cnblogs.com/xsiOS/p/5706732.html
Copyright © 2011-2022 走看看