iOS - 实用Tips

一、后台有媒体播放器时:

当其他应用程序占用媒体播放器时,不能影响到后台的媒体音乐播放;
当你的应用程序中有相机要拍照时,不会影响到后台音乐程序的播放

    // 当其他应用程序占用媒体播放器时,不能影响到后台的媒体音乐播放
    NSError *error;
    BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&error];
    if (!success) { //Handle error
        AXLog(@"%@", [error localizedDescription]);
    } else {
        // Yay! It worked! 当你的应用程序中有相机要拍照时,不会影响到后台音乐程序的播放
        AXLog(@"123456789");
    }
二、屏幕常亮
    /// 屏幕长亮
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];

三、NSString 转换为 int64、int32 (微信支付时遇到)

// NSString 转换为 int64
UInt64 timeStamp = atoll([payItem.timestamp UTF8String]);
// NSString 转换为 int32
UInt32 timeStamp = atoi([payItem.timestamp UTF8String]);
四、float变量 值为NaN
“这种错误是在float经过函数运行出了不是数字的值,nan的意思就是not a number。
主要常见原因:
1.除以0
2.sizeWithFont的字符串为nil
3.数学函数不正确运算
解决方法除了排除根源所在之外,用函数isnan()也是不错的选择(至少在没有彻底解决以前)
如下:

float x = NAN;
if (!isnan(x)) {
    view.frame = CGRectMake(x, 8, 10, 12);
}”
五、CFNetwork internal error
CFNetwork internal error (0xc01a:/BuildRoot/Library/Caches/com.apple.xbs/Sources/CFNetwork_Sim/CFNetwork-808.2.16/Loading/URLConnectionLoader.cpp:304)

访问的url地址不对 不存在等
六、获取网络图片大小

①阿里云OSS图片处理,链接:
https://help.aliyun.com/document_detail/44976.html?spm=5176.doc44975.6.952.aGGXXG
下面是iOS端获取,若是网络图片显示在UIImageView上,并且根据图片大小决定UIImageView长宽的话,直接让后台去做这件事

#define kHeadUrl            @"http://image.xxxxx.com/"  // 项目阿里云存储服务器地址
#define kSize_Image_Get     @"x-oss-process=image/info"

+ (void)getImageSizePath:(NSString *)imagePath heightBlock:(ImgHeightBlock)heightBlock{
    NSString *path = [NSString stringWithFormat:@"%@%@?%@",kHeadUrl,imagePath,kSize_Image_Get];
    
    [NetWorkManager getOrPostWithType:Get withUrlString:path withParams:nil loadingImageArr:nil progress:^(float progress) {
        
    } toShowView:nil success:^(NSDictionary *object) {
        NSDictionary *wD = [object objectForKey:@"ImageWidth"];
        NSDictionary *hD = [object objectForKey:@"ImageHeight"];
        NSString *w = [wD objectForKey:@"value"];
        NSString *h = [hD objectForKey:@"value"];
//        CGFloat heightR = kWidth * [h floatValue] / [w floatValue];

        if (heightBlock) {
            // ... 根据项目所需自定义
        }
    } fail:^(NSError *error) {
        AXLog(@"error : %@", error);
        
    } showHUD:NO];

}

②NSData

    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://xxx.jpg"]];

    UIImage *image = [UIImage imageWithData:data];

    AXLog(@"w = %f, h = %f",image.size.width,image.size.height);

③SDWebImage

    [[[SDWebImageManager sharedManager] imageDownloader] downloadImageWithURL:[NSURL URLWithString:[AXUtils getImagePath:ad.img]] options:SDWebImageDownloaderIgnoreCachedResponse progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
                    
     } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
           if (image) {
                 AXLog(@"w = %f, h = %f",image.size.width,image.size.height);
           }

     }];
七、获取网络图片平均色

①阿里云OSS

#define kColor_Image_Get    @"x-oss-process=image/average-hue"

+ (void)getImageColorPath:(NSString *)imagePath colorBlock:(ImgColorBlock)colorBlock{
    NSString *path = [NSString stringWithFormat:@"%@%@?%@",kHeadUrl,imagePath,kColor_Image_Get];
    
    [NetWorkManager getOrPostWithType:Get withUrlString:path withParams:nil loadingImageArr:nil progress:^(float progress) {
        
    } toShowView:nil success:^(NSDictionary *object) {
        NSString *color = [object objectForKey:@"RGB"];
//        AXLog(@"%@",[color substringFromIndex:2]);
        if (colorBlock) {
            colorBlock([color substringFromIndex:2]);
        }
    } fail:^(NSError *error) {
        AXLog(@"error : %@", error);
        
    } showHUD:NO];
}

②参考:http://www.cocoachina.com/bbs/read.php?tid=181490

-(UIColor*)mostColor{
     
     
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1
    int bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;
#else
    int bitmapInfo = kCGImageAlphaPremultipliedLast;
#endif
     
    //第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大
    CGSize thumbSize=CGSizeMake(50, 50);
     
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL,
                                                 thumbSize.width,
                                                 thumbSize.height,
                                                 8,//bits per component
                                                 thumbSize.width*4,
                                                 colorSpace,
                                                 bitmapInfo);
     
    CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);
    CGContextDrawImage(context, drawRect, self.CGImage);
    CGColorSpaceRelease(colorSpace);
     
     
     
    //第二步 取每个点的像素值
    unsigned char* data = CGBitmapContextGetData (context);
     
    if (data == NULL) return nil;
     
    NSCountedSet *cls=[NSCountedSet setWithCapacity:thumbSize.width*thumbSize.height];
 
    for (int x=0; x<thumbSize.width; x++) {
        for (int y=0; y<thumbSize.height; y++) {
             
            int offset = 4*(x*y);
             
            int red = data[offset];
            int green = data[offset+1];
            int blue = data[offset+2];
            int alpha =  data[offset+3];
             
            NSArray *clr=@[@(red),@(green),@(blue),@(alpha)];
            [cls addObject:clr];
             
        }
    }
    CGContextRelease(context);
     
     
    //第三步 找到出现次数最多的那个颜色
    NSEnumerator *enumerator = [cls objectEnumerator];
    NSArray *curColor = nil;
     
    NSArray *MaxColor=nil;
    NSUInteger MaxCount=0;
     
    while ( (curColor = [enumerator nextObject]) != nil )
    {
        NSUInteger tmpCount = [cls countForObject:curColor];
         
        if ( tmpCount < MaxCount ) continue;
         
        MaxCount=tmpCount;
        MaxColor=curColor;
         
    }
     
    return [UIColor colorWithRed:([MaxColor[0] intValue]/255.0f) green:([MaxColor[1] intValue]/255.0f) blue:([MaxColor[2] intValue]/255.0f) alpha:([MaxColor[3] intValue]/255.0f)];
}
八、获取本地视频截图
+ (UIImage *)getVideoImage:(NSString *)videoPath {
    
    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:videoPath] options:nil];
    
    AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    
    gen.appliesPreferredTrackTransform = YES;
    
    CMTime time = CMTimeMakeWithSeconds(0.0, 600);
    
    NSError *error = nil;
    
    CMTime actualTime;
    
    CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
    
    UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
    
    CGImageRelease(image);
    
    return thumb;
    
    
    
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容