美文网首页
7.如何设置全局字体

7.如何设置全局字体

作者: 小笨憨 | 来源:发表于2017-06-08 13:59 被阅读0次

有时候为了统一界面中所有的Label,Button,UITextField等的字体,我们在初始化的时候就需要不断的添加冗余的代码来设置自己的字体。

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

@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

相关文章

  • 7.如何设置全局字体

    有时候为了统一界面中所有的Label,Button,UITextField等的字体,我们在初始化的时候就需要不断的...

  • Idea基础设置

    Idea基础设置 1.全局设置 settings中的设置就是全局设置。 主题设置 字体设置 编辑器字体 控制台字体...

  • notepad++设置

    1. 主题设置 设置方法: 设置---语言格式设置---选择主题,同时勾选“使用全局字体”“使用全局字体大小可以选...

  • Notepad++配置

    设置 > 语言格式设置 Obsidian黑曜石主题+consolas 11号字体,绝对推荐,勾上“使用全局字体”“...

  • 反射方式修改App字体

    自定义Applicaiton,实现全局App修改,对于字体也是同理,通过Typeface设置加载App全局字体,对...

  • Android 常用功能

    全局设置字体 https://github.com/chrisjenx/Calligraphy

  • matplotlib中文字体显示

    查询matplotlib字体路径 查看当前字体 设置永久全局有效中文字体 下载字体https://github.c...

  • Android 全局设置字体

    Android 8.0 和 Android 支持库 26 允许您从提供程序应用请求字体,而无需将字体绑定到 APK...

  • Android 全局设置字体

    说到这,我估计你心理已经有全新的解决方案了,那就是利用setFactory,相关代码如下(在BaseActivit...

  • IDEA配置

    全局设置 主题 编码字体 控制台字体和颜色 编码方式 自动导包

网友评论

      本文标题:7.如何设置全局字体

      本文链接:https://www.haomeiwen.com/subject/bjzzfxtx.html