美文网首页推送iOS专业知识分享(iOS)
iOS对不同的屏幕进行字体适配

iOS对不同的屏幕进行字体适配

作者: Molary | 来源:发表于2016-05-23 13:09 被阅读5906次

    1.在不同的手机上对应的字体大小可能不同,一般的来说在 iphone 4 5 6的手机上的字体是一样大小,在6P上的字体是4 5 6上的1.5倍,

    下面进行label和button的字体适配

    1.先创建label的延展

    #import <UIKit/UIKit.h>
    #import <objc/runtime.h>
    @interface UILabel (DXFont)
    
    @end
    
    
    
    #import "UILabel+DXFont.h"
    @implementation UILabel (DXFont)
    + (void)load{
    //利用running time运行池的方法在程序启动的时候把两个方法替换 适用Xib建立的label
    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) {
        //部分不像改变字体的 把tag值设置成LabelFontSize值的跳过
        if (IS_IPHONE_6P) {
            
            if(self.tag != LabelFontSize) {
                CGFloat fontSize = self.font.pointSize;
                self.font = [UIFont systemFontOfSize:fontSize*1.5];
            }   
        }
        }
    return self;
    }
    

    2.button的实现

    #import <UIKit/UIKit.h>
    #import <objc/runtime.h>
    @interface UIButton (DXFont)
    
    @end
    
    
    #import "UIButton+DXFont.h"
    @implementation UIButton (DXFont)
    + (void)load{
    
    //利用running time运行池的方法在程序启动的时候把两个方法替换 适用Xib建立的label
    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) {
        //部分不像改变字体的 把tag值设置成2016跳过
        if (IS_IPHONE_6P) {
            if(self.tag != 2016) {
                CGFloat fontSize = self.titleLabel.font.pointSize;
                  self.titleLabel.font = [UIFont systemFontOfSize:fontSize*1.5];
            }
        }
    }
    return self;
    }
    

    如果要适配根据不同的屏幕使用不同的尺寸把后面的1.5 换成 下面定义的宏就可以啦

    //不同设备的屏幕比例(当然倍数可以自己控制)
    #define SizeScale ((IPHONE_HEIGHT > 568) ? IPHONE_HEIGHT/568 : 1)
    

    参考文档:http://www.jianshu.com/p/5815e81abb52

    相关文章

      网友评论

      本文标题:iOS对不同的屏幕进行字体适配

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