iOS 下如何设置全局字体?
2015-12-06 16:20
579 查看
iOS 6跟
iOS 7的字体还是有点不一样的,有时候为了两者的统一,或者,应设计师的要求,界面中所有的
Label,Button 等都用自定义字体,一般来说,我们在初始化的时候就需要不断地添加冗余的代码来设置自己的字体。
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
点赞
相关文章推荐
- iOS开发——界面跳转与返回及视图类型详解
- IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、@synthesize、@property、@dyna
- iOS 自定义进度条 MDRadialProgress
- 如何让iOS 保持界面流畅?这些技巧你知道吗
- ios实现倒计时的两种方法
- 使iOS开发提高极大效率的不为人知的技巧~~
- IOS--最新版SDWebImage的使用
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
- iOS开发-多线程-GDC常用方法
- iOS开发-多线程-GDC的基本使用
- 【iOS学习笔记】一些问题
- Vim命令合集
- ios开发之个人笔记(通过plist文件展示单组数据LOL)
- iOS 自定义TabBarController
- ios Masonry怎么以纯代码的方式计算cell高度
- iOS关键字含义(基础)
- iOS/mac开发的一些知名个人博客
- IOS开发记录(一)