全局修改Lable/Button字体
#ifndef SwizzlingExchange_h
#define SwizzlingExchange_h
#import <objc/runtime.h> static inline void swizzling_exchangeMethod(Class clazz, SEL originalSelector, SEL swizzledSelector) {
Method originalMethod = class_getInstanceMethod(clazz, originalSelector);
Method swizzledMethod = class_getInstanceMethod(clazz, swizzledSelector); BOOL success = class_addMethod(clazz, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); if (success) {
class_replaceMethod(clazz, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
} #endif /* SwizzlingExchange_h */
//
// UILabel+ChangeFont.m
// DFRomwe
//
// Created by 王卫亮 on 16/7/13.
// Copyright © 2016年 heyan. All rights reserved.
// #import "UILabel+ChangeFont.h"
#import "SwizzlingExchange.h" #define kLableFont @"Snell Roundhand" // 测试字体,容易看出来有没有全改掉 @implementation UILabel (ChangeFont) +(void)load {
//只执行一次这个方法
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
swizzling_exchangeMethod([self class], @selector(init), @selector(myInit));
swizzling_exchangeMethod([self class], @selector(initWithFrame:), @selector(myInitWithFrame:));
swizzling_exchangeMethod([self class], @selector(awakeFromNib), @selector(myAwakeFromNib));
});
} - (instancetype)myInit {
id __self = [self myInit];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.font.pointSize];
if (font) {
self.font = font;
}
return __self;
} - (instancetype)myInitWithFrame:(CGRect)rect {
id __self = [self myInitWithFrame: rect];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.font.pointSize];
if (font) {
self.font = font;
}
return __self;
} - (void)myAwakeFromNib {
[self myAwakeFromNib];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.font.pointSize];
if (font) {
self.font = font;
}
} @end
Button:
//
// UIButton+ChangeFont.m
// DFRomwe
//
// Created by 王卫亮 on 16/7/13.
// Copyright © 2016年 heyan. All rights reserved.
// #import "UIButton+ChangeFont.h"
#import "SwizzlingExchange.h" #define kLableFont @"Snell Roundhand" // 测试字体,容易看出来有没有全改掉 @implementation UIButton (ChangeFont) +(void)load {
//只执行一次这个方法
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
swizzling_exchangeMethod([self class], @selector(init), @selector(myInit));
swizzling_exchangeMethod([self class], @selector(initWithFrame:), @selector(myInitWithFrame:));
swizzling_exchangeMethod([self class], @selector(awakeFromNib), @selector(myAwakeFromNib));
});
} - (instancetype)myInit { id __self = [self myInit];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.titleLabel.font.pointSize];
if (font) {
self.titleLabel.font = font;
}
return __self;
} - (instancetype)myInitWithFrame:(CGRect)rect {
id __self = [self myInitWithFrame:rect];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.titleLabel.font.pointSize];
if (font) {
self.titleLabel.font = font;
}
return __self;
} - (void)myAwakeFromNib {
[self myAwakeFromNib];
UIFont * font = [UIFont fontWithName:DefaultFont size: self.titleLabel.font.pointSize];
if (font) {
self.titleLabel.font = font;
}
} @end
全局修改Lable/Button字体的更多相关文章
- iOS运用runtime全局修改UILabel的默认字体
iOS运用runtime全局修改UILabel的默认字体 一.需求背景介绍 在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时,对于一些特殊 ...
- 修改美化Matlab字体
修改美化Matlab字体 MATLAB作为高校理工科类本科生或研究生必不可少的科研工具已经有着很多年的历史,以至于在我们的大学生活里或科研工作中,MATLAB处处闪现着它的身影,给我们带来了不少 ...
- delphi 修改Hint的字体和颜色
//修改Hint的字体和颜色 public { Public declarations } procedure Sshowhint(var hintstr:string;var can ...
- Android Studio 3.1.2 修改字体(font)大小(size) 及老版本修改主题、字体、颜色 参照地址
Android Studio 3.1.2 修改字体(font)大小(size) 步骤:File-Settings-Editor-Color Scheme-Color Scheme Font-Size ...
- idea 修改编辑区字体样式、大小
idea 修改编辑区字体样式.大小 CreateTime--2018年4月26日10:36:59 Author:Marydon 设置-->Editor-->Font-->修改Fo ...
- 修改eclipse 代码字体大小以及文档字体大小
1..点击[window]在弹出的窗口中选择[preferences] 2.在弹出窗口中找到依次点击General(常规)——Apprearance(外观)——Colors and Fonts(颜色和 ...
- Android系统移植与调试之------->如何修改Android默认字体大小和设置里面字体大小比例
因为我修改 ro.sf.lcd_density的值,将它从160修改 为120,所以导致整个系统的字体都变得很小.因此需要将整个字体变大,并且在设置-->显示-->字体大小的4个选项的值都 ...
- 李洪强iOS开发之-修改状态栏的字体的颜色
李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [ ...
- 线程全局修改、死锁、递归锁、信号量、GIL以及多进程和多线程的比较
线程全局修改 x = 100 def func1(): global x print(x) changex() print(x) def changex(): global x x = 50 func ...
随机推荐
- pull刷新
package com.example.mylist; import java.util.ArrayList; import java.util.List; import com.example.ad ...
- (C语言)结构体成员的引用->(箭头)和 .(点)
关于结构体成员的引用有这样的规律: 箭头(->):左边必须为指针: 点号(.):左边必须为实体. 那么如果一个结构体指针引用一个成员,这个成员又是一个结构体(并且是一个实体),那么如果要引用这个 ...
- 拿到新机器,进行初始化和部署Nginx的过程
1. 在/etc/ansbile/hosts中添加主机init 2. 在sysinit.yml中修改要初始化的机器: hosts: init 3. 设置不检查key export ANS ...
- 基于NodeJS的全栈式开发
前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的 NodeJS,试 ...
- Padding Oracle Attack的一些细节与实现
Padding Oracle Attack还是颇具威力的,ASP.NET的Padding Oracle Attack被Pwnie评为2010年最佳服务端漏洞之一.还是看 Juliano Rizzo a ...
- CI框架源码分析
这几天,把ci源码又看了一遍,于是有了新的收获.明白了在application目录下core文件夹的作用,就是用来写ci核心文件的扩展的, 而且需要在配置文件中添加类前缀MY_. CI框架整体是但入口 ...
- 收集的maven 仓库地址(maven repository)
maven 仓库地址: 共有的仓库http://repo1.maven.org/maven2/http://repository.jboss.com/maven2/http://repository. ...
- 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密
腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...
- linux C之access函数(转-追梦的小鸟)
access():判断是否具有存取文件的权限 相关函数 stat,open,chmod,chown,setuid,setgid表头文件 #include<unistd.h>定义 ...
- [原创]cocos2d-x研习录-第二阶 概念类之布场层类(CCLayer)
上面说场景CCScene相当于一个大容器,那么布景层类CCLayer就是大容器里的若干个小容器.每个游戏场景CCScene会有很多层CCLayer,每一层CCLayer负责各自的任务.看一下CCLay ...