美文网首页
ios 常用技巧分享

ios 常用技巧分享

作者: 有梦才可以远航 | 来源:发表于2019-02-28 20:42 被阅读0次

    常用宏

    • @property
    #define PropertyStrong(ClassType,instance)  @property (nonatomic,strong) ClassType *instance;
    
    #define PropertyWeak(ClassType,instance)    @property (nonatomic,weak)  ClassType *instance;
    
    #define PropertyAssign(DataType,data)  @property (nonatomic,assign) DataType data;
    
    #define PropertyString(string)  @property (nonatomic,copy) NSString *string;
    
    #define PropertyCopy(ClassType,varname)    @property (nonatomic,copy) ClassType varname;
    

    • 手机屏幕相关
    #define KScreenWidth [UIScreen mainScreen].bounds.size.width
    #define KScreenHeigth [UIScreen mainScreen].bounds.size.height
    #define SCREEN_NATIVE_HEIGHT ([[UIScreen mainScreen] nativeBounds].size.height)
    #define SCREEN_NATIVE_SCALE ([[UIScreen mainScreen] nativeScale])
    #define SCREEN_REAL_HEIGHT (SCREEN_NATIVE_HEIGHT/SCREEN_NATIVE_SCALE)
    #define  IS_IPHONE_X (SCREEN_REAL_HEIGHT >=812.f? YES : NO)
    #define StateHeight (((IS_IPHONE_X ) == (YES))?(44.0): (20.0))
    #define NavigateHeight (((IS_IPHONE_X ) == (YES))?(88.0): (64.0))
    #define TabbarHeight (((IS_IPHONE_X ) == (YES))?(83.0): (49.0))
    

    • 颜色
    #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0fgreen:(g)/255.0fblue:(b)/255.0falpha:1]
    #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0fgreen:(g)/255.0fblue:(b)/255.0falpha:(a)]
    #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue &0xFF0000) >>16))/255.0green:((float)((rgbValue &0xFF00) >>8))/255.0blue:((float)(rgbValue &0xFF))/255.0alpha:1.0]
    #define UIColorFromRGBA(rgbValue, alphaValue) [UIColor colorWithRed:((float)((rgbValue &0xFF0000) >>16))/255.0green:((float)((rgbValue &0x00FF00) >>8))/255.0blue:((float)(rgbValue &0x0000FF))/255.0alpha:alphaValue]
    

    #define SharedApplication [UIApplication sharedApplication]
    #define ApplicationDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
    #define kKeyWindow [UIApplication sharedApplication].keyWindow
    #define GetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]
    #define String(str) [NSString stringWithFormat:@"%@",str]
    //沙盒路径
    #define MapPath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"MapPath"]
    

    简易方法

    1. //字符串判空
    +(BOOL) isEmpty:(NSString*) str{
        if([strisEqual:[NSNullnull]]) {
            returnYES;
        }
        if(str ==nil|| str ==NULL) {
            returnYES;
        }
        if ([[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
            returnYES;
        }
        return NO;
    }
    
    2. //判断字典是否为空
    + (BOOL)isBlankDictionary:(NSDictionary*)dic{
        if(!dic) {
            returnYES;
        }
        if ([dic isKindOfClass:[NSNull class]]) {
            returnYES;
        }
        if (![dic isKindOfClass:[NSDictionary class]]) {
            returnYES;
        }
        if(!dic.count) {
            returnYES;
        }
        if(dic ==nil) {
            returnYES;
        }
        if(dic ==NULL) {
            returnYES;
        }
        return NO;
    }
    3.//打开外链url
    + (void)openWebUrl:(NSString*)url{
        if ([CommonUtils isEmpty:url]) {
            return;
        }
        // 中文传输需要进行转义
        url = [urlstringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
        NSURL *webUrl = [NSURL URLWithString:url];
        if([SharedApplication canOpenURL:webUrl]){
            [SharedApplicationopenURL:webUrl];
        }
    }
    4.// 拨打电话
    + (void)callPhone:(NSString*)phoneNum {
        if(phoneNum.length==0) {
            return;
        }
        NSString*callPhone = [NSStringstringWithFormat:@"telprompt://%@", phoneNum];
    
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            dispatch_async(dispatch_get_main_queue(), ^{
                [lhw_microopenWebUrl:callPhone];
            });
        });
    }
    5.//传入文字、大小、宽度,返回文字高度
    + (CGFloat)countTextHeightWith:(NSString*)text withTextFont:(NSInteger)count withWidth:(CGFloat)width{
        NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:count]};
        CGRect rect = [String(text) boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
                                                                          options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
                                                                        attributes:attributes
                                                                          context:nil];
        CGFloatheight =ceil(rect.size.height)+1;
        returnheight;
    }
    6.//根据高度度求宽度  text 计算的内容  Height 计算的高度 font字体大小
    + (CGFloat)getWidthWithText:(NSString*)text height:(CGFloat)height font:(CGFloat)font{
    
        CGRect rect = [text boundingRectWithSize:CGSizeMake(MAXFLOAT, height)
                                        options:NSStringDrawingUsesLineFragmentOrigin
                                      attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]}
                                        context:nil];
        return rect.size.width;
    }
    7.//颜色
    + (UIColor*)colorWithHex:(NSString*)string
    {
        NSString *cleanString = [string stringByReplacingOccurrencesOfString:@"#" withString:@""];
        if([cleanStringlength] ==3) {
            cleanString = [NSStringstringWithFormat:@"%@%@%@%@%@%@",
                          [cleanStringsubstringWithRange:NSMakeRange(0,1)],[cleanStringsubstringWithRange:NSMakeRange(0,1)],
                          [cleanStringsubstringWithRange:NSMakeRange(1,1)],[cleanStringsubstringWithRange:NSMakeRange(1,1)],
                          [cleanStringsubstringWithRange:NSMakeRange(2,1)],[cleanStringsubstringWithRange:NSMakeRange(2,1)]];
        }
        if([cleanStringlength] ==6) {
            cleanString = [cleanStringstringByAppendingString:@"ff"];
        }
    
        unsignedintbaseValue;
        [[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];
    
        floatred = ((baseValue >>24) &0xFF)/255.0f;
        floatgreen = ((baseValue >>16) &0xFF)/255.0f;
        floatblue = ((baseValue >>8) &0xFF)/255.0f;
    
        return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
    }
    8.//处理网络请求返回数据中的特殊字符
    + (NSDictionary*)netWorkingBackDataHandleSpecialCharacte:(id_Nullable)data{
        if(data && data !=nil) {
            //处理/r/n/t
            NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    
            NSString * str2 = [str stringByReplacingOccurrencesOfString:@"\t" withString:@""];
    
            str2 = [str2stringByReplacingOccurrencesOfString:@"\n" withString:@""];
    
            str2 = [str2stringByReplacingOccurrencesOfString:@"\r" withString:@""];
    
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:[str2 dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
            returndic;
        }
        return [[NSDictionary alloc] init];
    }
    9.//查看当前代理
    + (NSString*)wifiAgentAddress{
        CFDictionaryRef proxySettings = CFNetworkCopySystemProxySettings();
        NSDictionary*dictProxy = (__bridge_transferid)proxySettings;
        //是否开启了http代理
        if([[dictProxyobjectForKey:@"HTTPEnable"]boolValue]){
            NSString*proxyAddress=[dictProxyobjectForKey:@"HTTPProxy"];//代理地址
            NSIntegerproxyPort=[[dictProxyobjectForKey:@"HTTPPort"]integerValue];//代理端口号
            returnproxyAddress;
        }
        return nil;
    }
    10.//push到viewController
    + (void)pushViewController:(Class)vcClass WithTitle:(NSString*)title
                  navigationVC:(UINavigationController*)navigationVC{
        UIViewController *vc = [[vcClass alloc] init];
        vc.title= title;
        vc.hidesBottomBarWhenPushed = YES;
        [navigationVCpushViewController:vc animated:YES];
    }
    11.//多级push后pop返回
    + (void)popViewController:(Class)vcClass navigationVC:(UINavigationController*)navigationVC{
        for (UIViewController *vc in navigationVC.viewControllers){
            if([vcisKindOfClass:vcClass])
            {
                [navigationVCpopToViewController:vcanimated:YES];
                return;
            }
        }
    }
    12.//创建字体视图的方法
    + (UILabel*)createLabelText:(NSString*)text
                      textColor:(UIColor*)textColor
                backgroundColor:(UIColor*)backgroundColor
                  textAlignment:(NSTextAlignment)textAlignment
                            font:(CGFloat)font
                  numberOfLines:(NSInteger)numberOfLines
    {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
        label.text= text;
        label.font = [UIFont systemFontOfSize:font];
        label.backgroundColor= backgroundColor;
        label.textAlignment= textAlignment;
        label.textColor= textColor;
        label.numberOfLines= numberOfLines;
        returnlabel;
    
    }
    13.//创建图片视图的方法
    + (UIImageView*)createImageViewWithImageName:(NSString*)imageName
    {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
        imageView.image=GetImage(imageName);
        returnimageView;
    }
    14.//确定是哪个viewcontroller
    + (UIViewController*)currentViewController{
    
        UIViewController* currVC =nil;
        UIViewController * Rootvc = kKeyWindow.rootViewController ;
        do{
            if ([Rootvc isKindOfClass:[UINavigationController class]]) {
                UINavigationController * nav = (UINavigationController *)Rootvc;
                UIViewController * v = [nav.viewControllers lastObject];
                currVC = v;
                Rootvc = v.presentedViewController;
                continue;
            }else if([Rootvc isKindOfClass:[UITabBarController class]]){
                UITabBarController * tabVC = (UITabBarController *)Rootvc;
                currVC = tabVC;
                Rootvc = [tabVC.viewControllers objectAtIndex:tabVC.selectedIndex];
                continue;
            }
        }while(Rootvc!=nil);
    
        returncurrVC;
    }
    15.//获取星期几
    + (NSString*)weekdayStringFromDate:(NSDate*)inputDate{
        NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null],@"星期日", @"星期一",@"星期二",@"星期三",@"星期四",@"星期五",@"星期六", nil];
    
        NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    
        NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
    
        [calendarsetTimeZone: timeZone];
    
        NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
    
        NSDateComponents*theComponents = [calendarcomponents:calendarUnitfromDate:inputDate];
    
        return[weekdaysobjectAtIndex:theComponents.weekday];
    }
    
    

    欢迎互相学习Github

    相关文章

      网友评论

          本文标题:ios 常用技巧分享

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