因为项目中很多地方都有对UIlabel的赋值,但是text.length == 0 或者为空时并没有去给默认值,导致很多界面空间是白板, 所以不想一个一个去改。希望能重写UIlabel 的setText: 方法,在一个地方修改一下就行了。

参考了:https://blog.csdn.net/jiang314/article/details/52200714

写一个ULabel的分类 因为会先走分类里面的方法。 但是这样做会导致任何UILabel处都会先走分类方法,所以要考虑清楚。

//
// UILabel+HHH.m
// ZheDieLabel
//
// Created by LiuWei on 2018/5/9.
// Copyright © 2018年 xxx. All rights reserved.
// #import "UILabel+HHH.h"
#import <objc/runtime.h> @implementation UILabel (HHH) //重写initialize
+ (void)initialize
{
// 获取到UILabel中setText对应的method
Method setText =class_getInstanceMethod([UILabel class], @selector(setText:));
Method setTextMySelf =class_getInstanceMethod([self class],@selector(setTextHooked:)); // 将目标函数的原实现绑定到setTextOriginalImplemention方法上
IMP setTextImp =method_getImplementation(setText);
class_addMethod([UILabel class], @selector(setTextOriginal:), setTextImp,method_getTypeEncoding(setText)); //然后用我们自己的函数的实现,替换目标函数对应的实现
IMP setTextMySelfImp =method_getImplementation(setTextMySelf);
class_replaceMethod([UILabel class], @selector(setText:), setTextMySelfImp,method_getTypeEncoding(setText)); } - (void)setTextHooked:(NSString *)string
{ // //在这里插入过滤算法
// string = [stringstringByReplacingOccurrencesOfString:@"
// " withString:@"\r\n"]; // do something what ever youwant
if (string.length== || string == nil) { string = @" - - "; } // invoke originalimplemention
[self performSelector:@selector(setTextOriginal:) withObject:string]; } @end
用:
///重写UIlabel的text属性
UILabel *tLab = [[UILabel alloc]initWithFrame:CGRectMake(, CGRectGetMaxY(btn.frame), , )];
tLab.text = nil;
[self.view addSubview:tLab];

最新文章

  1. Spring--开山篇
  2. Front End Developer Questions 前端开发人员问题(二)
  3. Linux-终端-快捷键
  4. 通过一道笔试题浅谈javascript中的promise对象
  5. Linux crontab定时执行任务
  6. php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
  7. Java中Set集合的使用
  8. jmeter 测试java协议经验总结
  9. Github、Jekyll 搭建及优化静态博客方法指南
  10. Xcode快捷键 ---- 提高效率
  11. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(六)
  12. 常见LINQ语句学习
  13. java jquery 函数多參数传递
  14. [Android 4.4.3] 泛泰A870 Mokee4.4.3 20140610 RC2.0 通过刷第三版 by syhost
  15. Quick Cocos2dx 与 Eclipse 连真机debug遇到的问题
  16. zigbee端口的理解
  17. java8_api_xml
  18. Web Worker模拟抢票
  19. [BUAA软工]第一次博客作业---阅读《构建之法》
  20. How Computers Boot Up.计算机的引导过程

热门文章

  1. 跨域、this指向
  2. vue-安装及新建一个项目
  3. Sabotage 【UVA - 10480】【最大流割边】
  4. decision table
  5. C++学习笔记(三)--数组、字符串
  6. js 解决函数加载的问题
  7. [Linux] 028 源码包安装过程
  8. java 日期工具
  9. java静态方法使用泛型
  10. 67.Task Scheduler(任务规划)