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

        }

  • 相关阅读:
    poli-java开源BI软件
    Spring Boot 教程
    微信小程序支持windows PC版了
    Java-JDK-windows和linux版-百度云下载
    ssh -i 密钥文件无法登陆问题
    锐捷交换机18010-X端口假死现象
    zabbix4.4安装
    yum只下载不安装
    openstack迁移计算节点所有云主机
    ceph SSD HDD分离与openstack调用
  • 原文地址:https://www.cnblogs.com/xsiOS/p/5706732.html
Copyright © 2011-2022 走看看