美文网首页
iOS 日常记录

iOS 日常记录

作者: 北风小南巷 | 来源:发表于2018-08-13 15:10 被阅读0次

    1.枚举

    typedef enum : NSUInteger {
        HXPhotoModelMediaSubTypePhoto = 0,  //!< 照片
        HXPhotoModelMediaSubTypeVideo       //!< 视频
    } HXPhotoModelMediaSubType;
    

    2.TabBar跳转隐藏(继承UINavigationController)

    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        if ([self.viewControllers count] > 0) {
            viewController.hidesBottomBarWhenPushed = YES;
        }
        [super pushViewController:viewController animated:animated];
    }
    

    3.扩大按钮的点击范围(继承UIButton)

    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event{
        //获取当前button的实际大小
        CGRect bounds = self.bounds;
        //若原热区小于44x44,则放大热区,否则保持原大小不变
        CGFloat widthDelta = MAX(44.0 - bounds.size.width, 0);
        CGFloat heightDelta = MAX(44.0 - bounds.size.height, 0);
        //扩大bounds
        bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
        //如果点击的点 在 新的bounds里,就返回YES
        return CGRectContainsPoint(bounds, point);
    }
    

    4.字典转字符串

    + (NSString *)dicToJsonStr:(NSDictionary *)dic {
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:0 error:&error];
        if (!jsonData) {
            NSLog(@"Got an error: %@", error);
            return @"";
        }else {
            return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
    }
    

    5.数组转字符串

    + (NSString *)arrayToJsonStr:(NSArray *)array {
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted  error:&error];
        if (!jsonData) {
            NSLog(@"Got an error: %@", error);
            return @"";
        } else {
            return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
    }
    

    6.字符串转字典

    + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
        
        if (jsonString == nil) {
            return nil;
        }else{
            NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
            NSError *err;
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
            if(err) {
                NSLog(@"json解析失败:%@",err);
                return nil;
            }
            return dic;
        }
    }
    

    7.获取uuid

    + (NSString *)uuid{
        // create a new UUID which you own
        CFUUIDRef uuidref = CFUUIDCreate(kCFAllocatorDefault);
        // create a new CFStringRef (toll-free bridged to NSString)
        // that you own
        CFStringRef uuid = CFUUIDCreateString(kCFAllocatorDefault, uuidref);
        NSString *result = (__bridge NSString *)uuid;
        //release the uuidref
        CFRelease(uuidref);
        // release the UUID
        CFRelease(uuid);
        return result;
    }
    

    8.设置点击手势部分响应

    -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
        if ([touch.view isDescendantOfView:self.shopcarTableView]) {
            return NO;
        }
        return YES;
    }
    

    9.单例

    + (instancetype)sharedManager {
        static dispatch_once_t onceToken;
        static IPhoneCallManager *instance = nil;
        dispatch_once(&onceToken, ^{
            instance = [[self alloc] initInPrivate];
        });
        return instance;
    }
    

    10.十六进制字符串颜色

    //color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
    + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha
    {
        //删除字符串中的空格
        NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
        // String should be 6 or 8 characters
        if ([cString length] < 6)
        {
            return [UIColor clearColor];
        }
        // strip 0X if it appears
        //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
        if ([cString hasPrefix:@"0X"])
        {
            cString = [cString substringFromIndex:2];
        }
        //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
        if ([cString hasPrefix:@"#"])
        {
            cString = [cString substringFromIndex:1];
        }
        if ([cString length] != 6)
        {
            return [UIColor clearColor];
        }
    
        // Separate into r, g, b substrings
        NSRange range;
        range.location = 0;
        range.length = 2;
        //r
        NSString *rString = [cString substringWithRange:range];
        //g
        range.location = 2;
        NSString *gString = [cString substringWithRange:range];
        //b
        range.location = 4;
        NSString *bString = [cString substringWithRange:range];
    
        // Scan values
        unsigned int r, g, b;
        [[NSScanner scannerWithString:rString] scanHexInt:&r];
        [[NSScanner scannerWithString:gString] scanHexInt:&g];
        [[NSScanner scannerWithString:bString] scanHexInt:&b];
        return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:alpha];
    }
    
    //默认alpha值为1
    + (UIColor *)colorWithHexString:(NSString *)color
    {
        return [self colorWithHexString:color alpha:1.0f];
    }
    

    11.获取当前视图控制器

    信息来源:http://blog.bombox.org/2016-05-11/find-current-viewcontroller/

    /** 获取当前控制器 */
    +(UIViewController *)currentVC
    {
        UIWindow *window = [[UIApplication sharedApplication] keyWindow];
        //当前windows的根控制器
        UIViewController *controller = window.rootViewController;
        //通过循环一层一层往下查找
        while (YES) {
            //先判断是否有present的控制器
            if (controller.presentedViewController) {
                //有的话直接拿到弹出控制器,省去多余的判断
                controller = controller.presentedViewController;
            } else {
                if ([controller isKindOfClass:[UINavigationController class]]) {
                    //如果是NavigationController,取最后一个控制器(当前)
                    controller = [controller.childViewControllers lastObject];
                } else if ([controller isKindOfClass:[UITabBarController class]]) {
                    //如果TabBarController,取当前控制器
                    UITabBarController *tabBarController = (UITabBarController *)controller;
                    controller = tabBarController.selectedViewController;
                } else {
                    if (controller.childViewControllers.count > 0) {
                        //如果是普通控制器,找childViewControllers最后一个
                        controller = [controller.childViewControllers lastObject];
                    } else {
                        //没有present,没有childViewController,则表示当前控制器
                        return controller;
                    }
                }
            }
        }
    }
    

    12.iOS去掉按钮的点击效果

    button.adjustsImageWhenHighlighted = NO;
    

    13.获取版本号

     //获得当前版本
    NSString *currentVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];
    

    14.第一次启动

    //第一次启动显示引导 if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
        {
           [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
    
            NSLog(@"第一次启动");
        }
        else
        {
            NSLog(@"已经不是第一次启动了");
        }
    

    15.代码执行一次

    static dispatch_once_t disOnce;  
    dispatch_once(&disOnce, ^ {  
    //这里写只操作一次的代码  
    });
    

    16.存储图片到沙盒

    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    //  正确路径
    NSString *filePath = [docPath stringByAppendingPathComponent:@"userData.data"];
    //  错误路径
    NSString *errorFilePath = [docPath stringByAppendingString:@"userData.data"];
    NSData *imgData = UIImagePNGRepresentation(image);
    [imgData writeToFile:filePath atomically:YES];
    

    17.从沙盒读取照片

    NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"userData.data"];
    NSData *imgData = [NSData dataWithContentsOfFile:filePath];
    UIImage *image = [UIImage imageWithData:imgData];
    

    18.字符串的截取(适用于所含字符串都不一样)

    -(NSString *)returnToCutString:(NSString *)cutString begin:(NSString *)beginStirng end:(NSString *)endString{
        NSRange startRange = [cutString rangeOfString:beginStirng];
        NSRange endRange = [cutString rangeOfString:endString];
        NSRange range = NSMakeRange(startRange.location + startRange.length, endRange.location - startRange.location - startRange.length);
        NSString *result = [cutString substringWithRange:range];
        return result;
    }
    

    19.启动页一直停留直到做完了所有操作才消失

    //在RootViewController中的ViewDidLoad中使用
        //1. 创建dispatch_semaphore
        dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
        
        //2. 你的请求操作
        [HttpRequest  requestDataSuccess:^(NSDictionary *responseObj) {
            //4. 在你请求结束后调用diapatch_signal
            dispatch_semaphore_signal(semaphore);
        } failure:^(NSError *error) {
        }];
        
        //3. 然后调用diapatch_wait
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        
        //5. 显示界面
        UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(80, 100, 300, 50)];
        label.text=@"helloworld";
        label.textColor=[UIColor blueColor];
        [self.view addSubview:label];
    
    

    相关文章

      网友评论

          本文标题:iOS 日常记录

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