美文网首页
iOS学习资料六之图片

iOS学习资料六之图片

作者: 十年一品温如言1008 | 来源:发表于2017-07-15 15:41 被阅读0次

    今天再学习十个,进步一点点。

    1.判断图片类型

    //通过图片Data数据第一个字节 来获取图片扩展名

    - (NSString *)contentTypeForImageData:(NSData *)data

    {

    uint8_t c;

    [data getBytes:&c length:1];

    switch (c)

    {

    case 0xFF:

    return @"jpeg";

    case 0x89:

    return @"png";

    case 0x47:

    return @"gif";

    case 0x49:

    case 0x4D:

    return @"tiff";

    case 0x52:

    if ([data length] < 12) {

    return nil;

    }

    NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];

    if ([testString hasPrefix:@"RIFF"]

    && [testString hasSuffix:@"WEBP"])

    {

    return @"webp";

    }

    return nil;

    }

    return nil;

    }

    2.获取手机和app信息

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    CFShow(infoDictionary);

    // app名称

    NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];

    // app版本

    NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

    // app build版本

    NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];

    //手机序列号

    NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];

    NSLog(@"手机序列号: %@",identifierNumber);

    //手机别名: 用户定义的名称

    NSString* userPhoneName = [[UIDevice currentDevice] name];

    NSLog(@"手机别名: %@", userPhoneName);

    //设备名称

    NSString* deviceName = [[UIDevice currentDevice] systemName];

    NSLog(@"设备名称: %@",deviceName );

    //手机系统版本

    NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];

    NSLog(@"手机系统版本: %@", phoneVersion);

    //手机型号

    NSString* phoneModel = [[UIDevice currentDevice] model];

    NSLog(@"手机型号: %@",phoneModel );

    //地方型号  (国际化区域名称)

    NSString* localPhoneModel = [[UIDevice currentDevice] localizedModel];

    NSLog(@"国际化区域名称: %@",localPhoneModel );

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    // 当前应用名称

    NSString *appCurName = [infoDictionary objectForKey:@"CFBundleDisplayName"];

    NSLog(@"当前应用名称:%@",appCurName);

    // 当前应用软件版本  比如:1.0.1

    NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];

    NSLog(@"当前应用软件版本:%@",appCurVersion);

    // 当前应用版本号码  int类型

    NSString *appCurVersionNum = [infoDictionary objectForKey:@"CFBundleVersion"];

    NSLog(@"当前应用版本号码:%@",appCurVersionNum);

    3.获取一个类的所有属性

    id LenderClass = objc_getClass("Lender");

    unsigned int outCount, i;

    objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);

    for (i = 0; i < outCount; i++) {

    objc_property_t property = properties[i];

    fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));

    }

    4.image圆角

    - (UIImage *)circleImage

    {

    // NO代表透明

    UIGraphicsBeginImageContextWithOptions(self.size, NO, 1);

    // 获得上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 添加一个圆

    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

    // 方形变圆形

    CGContextAddEllipseInRect(ctx, rect);

    // 裁剪

    CGContextClip(ctx);

    // 将图片画上去

    [self drawInRect:rect];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

    }

    5.image拉伸

    + (UIImage *)resizableImage:(NSString *)imageName

    {

    UIImage *image = [UIImage imageNamed:imageName];

    CGFloat imageW = image.size.width;

    CGFloat imageH = image.size.height;

    return [image resizableImageWithCapInsets:UIEdgeInsetsMake(imageH * 0.5, imageW * 0.5, imageH * 0.5, imageW * 0.5) resizingMode:UIImageResizingModeStretch];

    }

    6.JSON字符串转字典

    + (NSDictionary *)parseJSONStringToNSDictionary:(NSString *)JSONString {

    NSData *JSONData = [JSONString dataUsingEncoding:NSUTF8StringEncoding];

    NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableLeaves error:nil];

    return responseJSON;

    }

    7.身份证号验证

    - (BOOL)validateIdentityCard {

    BOOL flag;

    if (self.length <= 0) {

    flag = NO;

    return flag;

    }

    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];

    return [identityCardPredicate evaluateWithObject:self];

    }

    8.获取设备mac地址

    + (NSString *)macAddress {

    int                mib[6];

    size_t              len;

    char                *buf;

    unsigned char      *ptr;

    struct if_msghdr    *ifm;

    struct sockaddr_dl  *sdl;

    mib[0] = CTL_NET;

    mib[1] = AF_ROUTE;

    mib[2] = 0;

    mib[3] = AF_LINK;

    mib[4] = NET_RT_IFLIST;

    if((mib[5] = if_nametoindex("en0")) == 0) {

    printf("Error: if_nametoindex error\n");

    return NULL;

    }

    if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {

    printf("Error: sysctl, take 1\n");

    return NULL;

    }

    if((buf = malloc(len)) == NULL) {

    printf("Could not allocate memory. Rrror!\n");

    return NULL;

    }

    if(sysctl(mib, 6, buf, &len, NULL, 0) < 0) {

    printf("Error: sysctl, take 2");

    return NULL;

    }

    ifm = (struct if_msghdr *)buf;

    sdl = (struct sockaddr_dl *)(ifm + 1);

    ptr = (unsigned char *)LLADDR(sdl);

    NSString *outstring = [NSString stringWithFormat:@"X:X:X:X:X:X",

    *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];

    free(buf);

    return outstring;

    }

    9.导入自定义字体库

    1、找到你想用的字体的 ttf 格式,拖入工程

    2、在工程的plist中增加一行数组,“Fonts provided by application”

    3、为这个key添加一个item,value为你刚才导入的ttf文件名

    4、直接使用即可:label.font = [UIFont fontWithName:@"你刚才导入的ttf文件名" size:20.0];

    10.、拿到当前正在显示的控制器,不管是push进去的,还是present进去的都能拿到

    - (UIViewController *)getVisibleViewControllerFrom:(UIViewController*)vc {

    if ([vc isKindOfClass:[UINavigationController class]]) {

    return [self getVisibleViewControllerFrom:[((UINavigationController*) vc) visibleViewController]];

    }else if ([vc isKindOfClass:[UITabBarController class]]){

    return [self getVisibleViewControllerFrom:[((UITabBarController*) vc) selectedViewController]];

    } else {

    if (vc.presentedViewController) {

    return [self getVisibleViewControllerFrom:vc.presentedViewController];

    } else {

    return vc;

    }

    }

    }

    相关文章

      网友评论

          本文标题:iOS学习资料六之图片

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