iOS学习资料六之图片

2017-07-15  本文已影响0人  十年一品温如言1008

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

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;

}

}

}

上一篇下一篇

猜你喜欢

热点阅读