ios代码段

首先判断是否支持emoji:
- (BOOL)supportEmoji 

    BOOL hasEmoji = NO; 
#define kPreferencesPlistPath @"/private/var/mobile/Library/Preferences/com.apple.Preferences.plist" 
    NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:kPreferencesPlistPath]; 
    NSNumber *emojiValue = [plistDict objectForKey:@"KeyboardEmojiEverywhere"]; 
    if (emojiValue)     //value might not exist yet 
        hasEmoji = YES; 
    else 
        hasEmoji = NO; 
    [plistDict release]; 
     
    return hasEmoji; 
}

开启或关闭该功能:
    1.         1.    - (void)valueControl:(BOOL)open 
    2.    { 
    3.         
    4.    #define kPreferencesPlistPath @"/private/var/mobile/Library/Preferences/com.apple.Preferences.plist" 
    5.        NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:kPreferencesPlistPath]; 
    6.        [plistDict setValue:[NSNumber numberWithBool:open] forKey:@"KeyboardEmojiEverywhere"]; 
    7.        [plistDict writeToFile:kPreferencesPlistPath atomically:NO]; 
    8.        [plistDict release]; 
    9.    } 
    10.    

是否含有emoji字符
-(BOOL)stringContainsEmoji:(NSString *)string {
    __block BOOL returnValue = NO;
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:
         ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
             
             const unichar hs = [substring characterAtIndex:0];
             // surrogate pair
             if (0xd800 <= hs && hs <= 0xdbff) {
                 if (substring.length > 1) {
                     const unichar ls = [substring characterAtIndex:1];
                     const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                     if (0x1d000 <= uc && uc <= 0x1f77f) {
                         returnValue = YES;
                         }
                     }
                 } else if (substring.length > 1) {
                     const unichar ls = [substring characterAtIndex:1];
                     if (ls == 0x20e3) {
                         returnValue = YES;
                         }
                     
                     } else {
                         // non surrogate
                         if (0x2100 <= hs && hs <= 0x27ff) {
                             returnValue = YES;
                             } else if (0x2B05 <= hs && hs <= 0x2b07) {
                                 returnValue = YES;
                                 } else if (0x2934 <= hs && hs <= 0x2935) {
                                     returnValue = YES;
                                     } else if (0x3297 <= hs && hs <= 0x3299) {
                                         returnValue = YES;
                                         } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                                             returnValue = YES;
                                             }
                         }
             }];
    
    return returnValue;
}


不知道是应该叫红外感应还是应该叫什么,就是打电话的时候会自动黑屏的那个API,原来没注意过。
UIDevice *_curDevice = [UIDevice currentDevice];
  [_curDevice setProximityMonitoringEnabled:YES];
  NSNotificationCenter *_defaultCenter = [NSNotificationCenter defaultCenter];
  [_defaultCenter addObserverForName:UIDeviceProximityStateDidChangeNotification
                              object:nil
                               queue:[NSOperationQueue mainQueue]
                          usingBlock:^(NSNotification *note) {
                            if (_curDevice.proximityState == YES) {
                              NSLog(@"怕是黑屏了吧");
                            }
                            else {
                              NSLog(@"屏幕应该亮了");
                            }
                          }];


        [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置yes,播放结束设置NO,这个功能是开启红外感应
        
        //添加监听
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(sensorStateChange:)
                                                     name:@"UIDeviceProximityStateDidChangeNotification"
                                                   object:nil];
        
        //处理监听触发事件
        -(void)sensorStateChange:(NSNotificationCenter *)notification;
        {
            //如果此时手机靠近面部放在耳朵旁,那么声音将通过听筒输出,并将屏幕变暗(省电啊)
            if ([[UIDevice currentDevice] proximityState] == YES)
            {
                NSLog(@"Device is close to user");
                [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
                
            }
            else
                 {
                     NSLog(@"Device is not close to user");
                     [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
                     }
             }
        
        
         //初始化播放器的时候如下设置
         UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
         AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                                    sizeof(sessionCategory),
                                    &sessionCategory);
        
         UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
         AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
                                     sizeof (audioRouteOverride),
                                     &audioRouteOverride);
        
         AVAudioSession *audioSession = [AVAudioSession sharedInstance];
         //默认情况下扬声器播放
         [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
         [audioSession setActive:YES error:nil]




//赞

UIView *zanView = (UIView *)sender;
    zanView.backgroundColor = [UIColor redColor];
    [UIView animateWithDuration:0.3 animations:^{
        zanView.transform = CGAffineTransformMakeScale(1.2, 1.2);
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.3 animations:^{
            zanView.transform = CGAffineTransformMakeScale(0.9, 0.9);
        } completion:^(BOOL finished) {
            [UIView animateWithDuration:0.3 animations:^{
                zanView.transform = CGAffineTransformMakeScale(1.0, 1.0);
            } completion:^(BOOL finished) {
                
            }];
        }];
    }];


// 视图抖动动画
+ (void)shakeView:(UIView *)view  
{
  float fDuration = 1.2f;
    if (view && (fDuration >= 0.1f))
    {
        CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
        //设置抖动幅度
        shake.fromValue = [NSNumber numberWithFloat:-0.3];
        shake.toValue = [NSNumber numberWithFloat:+0.3];
        shake.duration = 0.1f;
        shake.repeatCount = fDuration/4/0.1f;
        shake.autoreverses = YES;
        [view.layer addAnimation:shake forKey:@"shakeView"];
    }else{}
}


// 对指定视图进行截图
+ (UIImage *)screenShotView:(UIView *)view
{
    UIImage *imageRet = nil;
     
    if (view)
    {
        if(UIGraphicsBeginImageContextWithOptions != NULL)
        {
            UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0);
        }
        else
        {
            UIGraphicsBeginImageContext(view.frame.size);
        }
         
        //获取图像
        [view.layer renderInContext:UIGraphicsGetCurrentContext()];
        imageRet = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(imageRet, nil, nil, nil);
    }else{APP_ASSERT_STOP}
     
    return imageRet;
}


//将gif图片解析成image数组
+ (NSMutableArray *)praseGIFDataToImageArray:(NSData *)data;
 {
    NSMutableArray *frames = [[NSMutableArray alloc] init];
    CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)data, NULL);
    CGFloat animationTime = 0.f;
    if (src) {
        size_t l = CGImageSourceGetCount(src);
        frames = [NSMutableArray arrayWithCapacity:l];
        for (size_t i = 0; i < l; i++) {
            CGImageRef img = CGImageSourceCreateImageAtIndex(src, i, NULL);
            NSDictionary *properties = (NSDictionary *)CGImageSourceCopyPropertiesAtIndex(src, i, NULL);
            NSDictionary *frameProperties = [properties objectForKey:(NSString *)kCGImagePropertyGIFDictionary];
            NSNumber *delayTime = [frameProperties objectForKey:(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
            animationTime += [delayTime floatValue];
            if (img) {
                [frames addObject:[UIImage imageWithCGImage:img]];
                CGImageRelease(img);
            }
        }
        CFRelease(src);
    }
     return frames;
}

//UIImage转为灰度图

-(UIImage*)getGrayImage:(UIImage*)sourceImage
{
    int width = sourceImage.size.width;
    int height = sourceImage.size.height;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef context = CGBitmapContextCreate (nil,width,height,8,0,colorSpace,kCGImageAlphaNone);
    CGColorSpaceRelease(colorSpace);
    if (context == NULL) {
        return nil;
    }
    CGContextDrawImage(context,CGRectMake(0, 0, width, height), sourceImage.CGImage);
    UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
    CGContextRelease(context);
    return grayImage;
}
//判断两个NSDate类的时间间距

NSDate *dateA;
NSDate *dateB;
 
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                                           fromDate:dateA
                                             toDate:dateB
                                            options:0];
 
NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值