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

        }

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/xsiOS/p/5706732.html
Copyright © 2011-2022 走看看