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

        }

  • 相关阅读:
    codevs 1199 开车旅行 2012年NOIP全国联赛提高组
    poj 3349 Snowflake Snow Snowflakes
    poj 3264 Balanced Lineup
    求二进制数中1的个数
    20个正则表达式,减少千行代码
    推流脚本
    Navicat 管理工具下载地址,破解版
    emoji表情处理研究
    计算机网络学习
    tcp/ip 学习-通过视频学习
  • 原文地址:https://www.cnblogs.com/xsiOS/p/5706732.html
Copyright © 2011-2022 走看看