• OC使用inline替代宏


    
    CG_INLINE void
    GCDDelay(int64_t delayInSeconds,dispatch_block_t block){
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(),block);
    }
    
    CG_INLINE void
    GCDOnce( dispatch_once_t  onceToken,DISPATCH_NOESCAPE dispatch_block_t block){
        dispatch_once ( &onceToken, block);
    }
    
    CG_INLINE CGFloat
    WIDTH(){
        static CGFloat ScreenWidth;
        static dispatch_once_t  onceToken;
        GCDOnce(onceToken,^{
            ScreenWidth = CGRectGetWidth([UIScreen mainScreen].bounds);
        });
        return ScreenWidth;
    };
    
    
    CG_INLINE CGFloat
    HEIGHT(){
        static CGFloat ScreenHeight;
        static dispatch_once_t  onceToken;
        
        GCDOnce(onceToken,^{
            ScreenHeight = CGRectGetHeight([UIScreen mainScreen].bounds);
        });
        return ScreenHeight;
    };
    
    
    CG_INLINE CGRect
    SCREEN(){
        static CGRect ScreenRect;
        static dispatch_once_t  onceToken;
        
        GCDOnce(onceToken,^{
            if (CGRectIsEmpty(ScreenRect) || CGRectIsNull(ScreenRect)) {
                ScreenRect = [UIScreen mainScreen].bounds;
            }
        });
        return ScreenRect;
    };
    
    
    CG_INLINE CGFloat
    FontScale(){
        static CGFloat FScale;
        static dispatch_once_t  onceToken;
        
        GCDOnce(onceToken,^{
            FScale = 72.0/96.0;
        });
        return FScale;
    };
    
    
    CG_INLINE CGFloat
    SizeScaleX(){
        static CGFloat autoSizeScaleX;
        static dispatch_once_t  onceToken;
        
        GCDOnce(onceToken,^{
            autoSizeScaleX = (WIDTH()>480?WIDTH()/320.0:1.0);
        });
        return autoSizeScaleX;
    };
    
    
    CG_INLINE CGFloat
    SizeScaleY(){
        static CGFloat autoSizeScaleY;
        static dispatch_once_t  onceToken;
        
        GCDOnce(onceToken,^{
            autoSizeScaleY = (WIDTH()>480?HEIGHT()/568.0:1.0);
        });
        return autoSizeScaleY;
    };
    
    CG_INLINE CGRect
    CGLFLMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
    {
        CGRect rect;
        rect.origin.x = x *SizeScaleX();
        rect.origin.y = y *SizeScaleY();
        rect.size.width = width *SizeScaleX();
        rect.size.height = height *SizeScaleY();
        return rect;
    };
    
    CG_INLINE CGPoint
    CGPointLFLMake(CGFloat x, CGFloat y)
    {
        CGPoint pointLFL;
        pointLFL.x = x * SizeScaleX();
        pointLFL.y = y * SizeScaleY();
        return pointLFL;
    };
    
    CG_INLINE CGSize
    CGSizeLFLMake(CGFloat width, CGFloat height)
    {
        CGSize sizeLFL;
        sizeLFL.width = width* SizeScaleX();
        sizeLFL.height = height* SizeScaleY();
        return sizeLFL;
    };
    
  • 相关阅读:
    JBoss下配置数据源加密
    线程返回值的方式介绍
    @Async java 异步方法
    spring 源码下载地址
    springmvc maven 入门及页面拿不到controller的值 显示${message} el表达式不起作用
    mysql常用函数
    eclipse 开发常见问题集锦
    linux 常用命令及零散知识
    js一些注意事项
    liunx 免密登录远程主机
  • 原文地址:https://www.cnblogs.com/levy/p/OC-shi-yong-chang-liangbian-liang-ti-dai-hong.html
Copyright © 2020-2023  润新知