全局修改字体
2016-05-13 21:23
656 查看
全局修改字体可以在myWillMoveToSuperview中修改
具体代码如下:
@implementation UILabel (myFont)
+ (void)load {
//获得viewController的生命周期方法的selector
SEL systemSel = @selector(willMoveToSuperview:);
//自己实现的将要被交换的方法的selector
SEL swizzSel = @selector(myWillMoveToSuperview:);
//两个方法的Method
Method systemMethod = class_getInstanceMethod([self class], systemSel);
Method swizzMethod = class_getInstanceMethod([self class], swizzSel);
//首先动态添加方法,实现是被交换的方法,返回值表示添加成功还是失败
BOOL isAdd = class_addMethod(self, systemSel, method_getImplementation(swizzMethod), method_getTypeEncoding(swizzMethod));
if (isAdd) {
//如果成功,说明类中不存在这个方法的实现
//将被交换方法的实现替换到这个并不存在的实现
class_replaceMethod(self, swizzSel, method_getImplementation(systemMethod), method_getTypeEncoding(systemMethod));
} else {
//否则,交换两个方法的实现
method_exchangeImplementations(systemMethod, swizzMethod);
}
}
- (void)myWillMoveToSuperview:(UIView *)newSuperview {
[self myWillMoveToSuperview:newSuperview];
if (newSuperview == nil ) {
return ;
}
if ([newSuperview isKindOfClass:[UITextField class]]){
UITextField* tf = (UITextField*)newSuperview;
self.font = [UIFont fontWithName:tf.font.fontName size:tf.font.pointSize + 1];
return;
}
if ([newSuperview isKindOfClass:[UITextView class]]){
UITextView* tv = (UITextView*)newSuperview;
self.font = [UIFont fontWithName:tv.font.fontName size:tv.font.pointSize + 1];
return ;
}
if (self) {
if (self.tag == 10086) {
// self.font = [UIFont systemFontOfSize:self.font.pointSize];
} else {
self.font = [UIFont fontWithName:self.font.fontName size:self.font.pointSize + 1];
}
}
}
加上这两句
if ([newSuperview isKindOfClass:[UITextField class]]){
UITextField* tf = (UITextField*)newSuperview;
self.font = [UIFont fontWithName:tf.font.fontName size:tf.font.pointSize + 1];
return;
}
if ([newSuperview isKindOfClass:[UITextView class]]){
UITextView* tv = (UITextView*)newSuperview;
self.font = [UIFont fontWithName:tv.font.fontName size:tv.font.pointSize + 1];
return ;
}
的原因是因为 不断修改这两个视图的值字体会不断增大
具体代码如下:
@implementation UILabel (myFont)
+ (void)load {
//获得viewController的生命周期方法的selector
SEL systemSel = @selector(willMoveToSuperview:);
//自己实现的将要被交换的方法的selector
SEL swizzSel = @selector(myWillMoveToSuperview:);
//两个方法的Method
Method systemMethod = class_getInstanceMethod([self class], systemSel);
Method swizzMethod = class_getInstanceMethod([self class], swizzSel);
//首先动态添加方法,实现是被交换的方法,返回值表示添加成功还是失败
BOOL isAdd = class_addMethod(self, systemSel, method_getImplementation(swizzMethod), method_getTypeEncoding(swizzMethod));
if (isAdd) {
//如果成功,说明类中不存在这个方法的实现
//将被交换方法的实现替换到这个并不存在的实现
class_replaceMethod(self, swizzSel, method_getImplementation(systemMethod), method_getTypeEncoding(systemMethod));
} else {
//否则,交换两个方法的实现
method_exchangeImplementations(systemMethod, swizzMethod);
}
}
- (void)myWillMoveToSuperview:(UIView *)newSuperview {
[self myWillMoveToSuperview:newSuperview];
if (newSuperview == nil ) {
return ;
}
if ([newSuperview isKindOfClass:[UITextField class]]){
UITextField* tf = (UITextField*)newSuperview;
self.font = [UIFont fontWithName:tf.font.fontName size:tf.font.pointSize + 1];
return;
}
if ([newSuperview isKindOfClass:[UITextView class]]){
UITextView* tv = (UITextView*)newSuperview;
self.font = [UIFont fontWithName:tv.font.fontName size:tv.font.pointSize + 1];
return ;
}
if (self) {
if (self.tag == 10086) {
// self.font = [UIFont systemFontOfSize:self.font.pointSize];
} else {
self.font = [UIFont fontWithName:self.font.fontName size:self.font.pointSize + 1];
}
}
}
加上这两句
if ([newSuperview isKindOfClass:[UITextField class]]){
UITextField* tf = (UITextField*)newSuperview;
self.font = [UIFont fontWithName:tf.font.fontName size:tf.font.pointSize + 1];
return;
}
if ([newSuperview isKindOfClass:[UITextView class]]){
UITextView* tv = (UITextView*)newSuperview;
self.font = [UIFont fontWithName:tv.font.fontName size:tv.font.pointSize + 1];
return ;
}
的原因是因为 不断修改这两个视图的值字体会不断增大
相关文章推荐
- iOS TableView解耦
- iOS开发(OC)——文字滚动效果
- iOS开发之category动态添加属性的方法------关联
- iOS 并行编程:Thread
- Shou 团队诚意满满的招募 iOS Leader
- IOS绘制圆,直线,弧线,矩形,扇形,三角形,贝塞尔等图形
- iOS 知识-常用小技巧大杂烩
- IOS 动画整理
- IOS开发 开发过程中的一些尺寸问题
- iOS 相册多选 相机选择图片
- iOS 开发中常用编码格式转化
- iOS 9 NEHotspotHelper 的NetworkExtension使用
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
- iOS - 蓝牙 BLE
- iOS 预留帖子
- iOS之Touch ID的使用
- iOS 开灯 调用系统手电筒
- iOS应用程序间共享数据
- iOS开发-VLC编译
- IOS9 那些坑