10.如何设置全局字体
2016-02-18 16:29
295 查看
有时候为了统一界面中所有的 Label,Button ,UITextField 等的字体,我们在初始化的时候就需要不断地添加冗余的代码来设置自己的字体。
如果你的界面全部是代码实现的,而且项目初期就已经定下统一用什么字体了,这就不是什么难事。但是,如果你的界面是由大量IB实现的,而且用的是自定义的字体,在IB中选都没法选;或是项目已经完成差不多了,上面要求统一改字体,那该如何是好?
现在就来看通过objective-c的动态性设置统一的字体。
注意: 以下方法只用于全局修改由 Xib 加载的界面的 UIButton, UILabel的字体,其他的如UITextField等类似,新建Catogery就好,想修改代码生成的界面,修改 initWithCoder 为 init就好
关联文章地址:
Objective-C Runtime 运行时之四:Method Swizzling
CocoaChina 之 Method Swizzling:
UILabel *label = [[UILabel alloc] init]; label.font = [UIFont fontWithName:@"myFont"];
如果你的界面全部是代码实现的,而且项目初期就已经定下统一用什么字体了,这就不是什么难事。但是,如果你的界面是由大量IB实现的,而且用的是自定义的字体,在IB中选都没法选;或是项目已经完成差不多了,上面要求统一改字体,那该如何是好?
现在就来看通过objective-c的动态性设置统一的字体。
Method swizzling
什么是Method swizzling, 请查看文章最后关联的链接。注意: 以下方法只用于全局修改由 Xib 加载的界面的 UIButton, UILabel的字体,其他的如UITextField等类似,新建Catogery就好,想修改代码生成的界面,修改 initWithCoder 为 init就好
#import <UIKit/UIKit.h> #import <objc/runtime.h> @interface UIButton (myFont) @end @interface UILabel (myFont) @end @implementation UIButton (myFont) + (void)load { Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:)); Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:)); method_exchangeImplementations(imp, myImp); } - (id)myInitWithCoder:(NSCoder*)aDecode { [self myInitWithCoder:aDecode]; if (self) { CGFloat fontSize = self.titleLabel.font.pointSize; self.titleLabel.font = <# Your Font Here #>; } return self; } @end @implementation UILabel (myFont) + (void)load { Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:)); Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:)); method_exchangeImplementations(imp, myImp); } - (id)myInitWithCoder:(NSCoder*)aDecode { [self myInitWithCoder:aDecode]; if (self) { CGFloat fontSize = self.font.pointSize; self.font = <# Your Font Here #>; } return self; } @end
关联文章地址:
Objective-C Runtime 运行时之四:Method Swizzling
CocoaChina 之 Method Swizzling:
相关文章推荐
- ResumeThread用于一个已结束的线程
- Android开发笔记(六十六)自定义对话框
- <c:if>------JSTL
- 怎样获取当前点击时间的对象
- DirectShow学习笔记总结
- 第二发~次方求模~
- Java中join的使用
- Js基础知识梳理系列
- Java线程
- Android View中getViewTreeObserver().addOnGlobalLayoutListener()
- Android Download机制详解(一)DocumentUI部分
- 仿QQ长按弹出功能菜单
- [置顶] 自学-spring-quartz 进行整合-02
- TextView设置最多显示指定字符数,超过部分显示...(省略号)
- Hibernate之Session增删改查操作
- Unity3d LineRenderer画线
- mysql 1129 error
- Spark学习笔记三(RDD常用操作)
- iOS 沙盒文件操作
- jsp下页面跳转的几种方法小结