zoukankan      html  css  js  c++  java
  • 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;
    };
    
  • 相关阅读:
    WEBAPI 增加身份验证
    C# Image与Base64编码互转函数
    WebApi 接口传参接参
    Spring.Net依赖注入(属性注入)学习笔记
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(30)-本地化(多语言)
    文件各种上传,离不开的表单
    linux下yum命令出现Loaded plugins: fastestmirror
    linux系统快速安装宝塔
    微信小程序实现watch属性监听数据变化
    chrome调试微信
  • 原文地址:https://www.cnblogs.com/levy/p/OC-shi-yong-chang-liangbian-liang-ti-dai-hong.html
Copyright © 2011-2022 走看看