系统
//获取iPhone自带的语言种类
-(NSArray *)getlangeArr{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
return languages;
}
/// 获取软件当前版本号
- (NSString *) getCurrentVersion {
return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
}
/// 获取名字
- (NSString *) getProductName {
NSString* prodName =[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
return prodName;
}
/// 获取系统版本
+ (NSString *) getCurrentSystemVersion {
return [[UIDevice currentDevice] systemVersion];
}
判空
//字符串判空
-(BOOL )strIsEmpty:(NSString *)str{
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmedStr = [str stringByTrimmingCharactersInSet:set];
if (!trimmedStr.length) {
return YES;
}else if ([str isKindOfClass:[NSNull class]]) {
return YES;
}else if (str == nil || str == NULL || [str isEqualToString:@"(null)"] || [str isEqualToString:@"null"] ||[str isEqualToString:@""]) {
return YES;
}
return NO;
}
//数组判空
-(BOOL)arrIsEmpty:(NSArray *)array{
if (array == nil) {
return YES;
}
if (array.count<1) {
return YES;
}
if ([array isKindOfClass:[NSNull class]]) {
return YES;
}
if (![array isKindOfClass:[NSArray class]]){
return YES;
}
return NO;
}
//字典判空
-(BOOL)dicIsEmpty:(NSDictionary *)dic{
if (dic == nil) {
return YES;
}
if ([dic isKindOfClass:[NSNull class]]) {
return YES;
}
if (![dic isKindOfClass:[NSDictionary class]]){
return YES;
}
return NO;
}
基本类型操作及转换
//判断是否包含中文
- (BOOL)containChinese:(NSString *)str {
for(int i=0; i< [str length];i++){
int a = [str characterAtIndex:i];
if( a > 0x4e00 && a < 0x9fff){
return YES;
}
}
return NO;
}
//遍历字符串并输出成数组
-(NSArray *)getStrArray:(NSString *)str{
NSMutableArray *array=[NSMutableArray array];
for(int i =0; i < [str length]; i++)
{
NSString *everyStr = [str substringWithRange:NSMakeRange(i,1)];
NSString *getStr=[NSString stringWithFormat:@"%@",everyStr];
[array addObject:getStr];
}
return array;
}
//字典转数组
-(NSArray *)getArry:(NSDictionary *)fromDic{
NSArray *keys = [fromDic allKeys];
NSMutableArray *tmp=[NSMutableArray array];
for (NSInteger i = 0; i < keys.count; i++)
{
NSString *everyStr=keys[i];
[tmp addObject:everyStr];
}
NSArray *noewArry=[NSArray arrayWithArray:tmp];
return noewArry;
}
//将字典中的某一项抽出组成新的数组
-(NSMutableArray *)wantoNsmutArr:(NSArray *)forArr anduseForKey:(NSString *)useValue{
NSMutableArray *wantToList=[NSMutableArray array];
for ( NSInteger i=0; i<forArr.count; i++) {
NSDictionary *welpicDic=forArr[i];
NSString *welpicDicStr;
if ([welpicDic objectForKey:useValue]) {
welpicDicStr=[welpicDic objectForKey:useValue];
}else{
welpicDicStr=@"";
}
[wantToList addObject:welpicDicStr];
}
return wantToList;
}
//截取两个字符串之间的字符
-(NSString *)afterInter:(NSString *)fromStr andStar:(NSString *)starRangStr andEnd:(NSString *)endStr{
NSString *result;
NSRange startRange = [fromStr rangeOfString:starRangStr];
NSRange endRange = [fromStr rangeOfString:endStr];
NSRange range = NSMakeRange(startRange.location + startRange.length, endRange.location - startRange.location - startRange.length);
result = [fromStr substringWithRange:range];
return result;
}
//截取某个字符和最后一次出现的字符之间的字符串
-(NSString *)intercept:(NSString *)fromStr beginRangStr:(NSString *)starRangStr lastRange:(NSString *)lastStr{
NSString *result;
NSArray *rangindexarr=[self rangeOfSubString:lastStr inString:fromStr];
NSRange startRange = [fromStr rangeOfString:starRangStr];
NSRange lastRange = {[rangindexarr.lastObject integerValue],1};
NSRange range = NSMakeRange(startRange.location + startRange.length, lastRange.location - startRange.location - startRange.length);
result = [fromStr substringWithRange:range];
return result;
}
- (NSArray *)rangeOfSubString:(NSString*)subStr inString:(NSString*)string {
NSMutableArray *rangeArray = [NSMutableArray array];
NSString *string1 = [string stringByAppendingString:subStr];
NSString *temp;
for(int i =0; i < string.length; i ++) {
temp = [string1 substringWithRange:NSMakeRange(i, subStr.length)];
if ([temp isEqualToString:subStr]) {
NSRange range = {i,subStr.length};
NSInteger index=range.location;
[rangeArray addObject: [NSString stringWithFormat:@"%ld",(long)index]];
}
}
return rangeArray;
}
//识别字符串中存在的url
- (NSArray *)getURLFromStr:(NSString *)urlStr {
NSError *error;
//可以识别url的正则表达式
NSString *regulaStr = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *arrayOfAllMatches = [regex matchesInString:urlStr
options:0
range:NSMakeRange(0, [urlStr length])];
//NSString *subStr;
NSMutableArray *arr=[[NSMutableArray alloc] init];
for (NSTextCheckingResult *match in arrayOfAllMatches){
NSString* substringForMatch;
substringForMatch = [string substringWithRange:match.range];
[arr addObject:substringForMatch];
}
return arr;
}
//data转string
- (NSString *)jsonToString:(id)data {
if(data == nil) { return nil; }
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:NSJSONWritingPrettyPrinted error:nil];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
- (NSData *)UTF8Data:(NSData *)data {
//保存结果
NSMutableData *resData = [[NSMutableData alloc] initWithCapacity:data.length];
NSData *replacement = [@"�" dataUsingEncoding:NSUTF8StringEncoding];
uint64_t index = 0;
const uint8_t *bytes = data.bytes;
long dataLength = (long) data.length;
while (index < dataLength) {
uint8_t len = 0;
uint8_t firstChar = bytes[index];
// 1个字节
if ((firstChar & 0x80) == 0 && (firstChar == 0x09 || firstChar == 0x0A || firstChar == 0x0D || (0x20 <= firstChar && firstChar <= 0x7E))) {
len = 1;
}
// 2字节
else if ((firstChar & 0xE0) == 0xC0 && (0xC2 <= firstChar && firstChar <= 0xDF)) {
if (index + 1 < dataLength) {
uint8_t secondChar = bytes[index + 1];
if (0x80 <= secondChar && secondChar <= 0xBF) {
len = 2;
}
}
}
// 3字节
else if ((firstChar & 0xF0) == 0xE0) {
if (index + 2 < dataLength) {
uint8_t secondChar = bytes[index + 1];
uint8_t thirdChar = bytes[index + 2];
if (firstChar == 0xE0 && (0xA0 <= secondChar && secondChar <= 0xBF) && (0x80 <= thirdChar && thirdChar <= 0xBF)) {
len = 3;
} else if (((0xE1 <= firstChar && firstChar <= 0xEC) || firstChar == 0xEE || firstChar == 0xEF) && (0x80 <= secondChar && secondChar <= 0xBF) && (0x80 <= thirdChar && thirdChar <= 0xBF)) {
len = 3;
} else if (firstChar == 0xED && (0x80 <= secondChar && secondChar <= 0x9F) && (0x80 <= thirdChar && thirdChar <= 0xBF)) {
len = 3;
}
}
}
// 4字节
else if ((firstChar & 0xF8) == 0xF0) {
if (index + 3 < dataLength) {
uint8_t secondChar = bytes[index + 1];
uint8_t thirdChar = bytes[index + 2];
uint8_t fourthChar = bytes[index + 3];
if (firstChar == 0xF0) {
if ((0x90 <= secondChar & secondChar <= 0xBF) && (0x80 <= thirdChar && thirdChar <= 0xBF) && (0x80 <= fourthChar && fourthChar <= 0xBF)) {
len = 4;
}
} else if ((0xF1 <= firstChar && firstChar <= 0xF3)) {
if ((0x80 <= secondChar && secondChar <= 0xBF) && (0x80 <= thirdChar && thirdChar <= 0xBF) && (0x80 <= fourthChar && fourthChar <= 0xBF)) {
len = 4;
}
} else if (firstChar == 0xF3) {
if ((0x80 <= secondChar && secondChar <= 0x8F) && (0x80 <= thirdChar && thirdChar <= 0xBF) && (0x80 <= fourthChar && fourthChar <= 0xBF)) {
len = 4;
}
}
}
}
// 5个字节
else if ((firstChar & 0xFC) == 0xF8) {
len = 0;
}
// 6个字节
else if ((firstChar & 0xFE) == 0xFC) {
len = 0;
}
if (len == 0) {
index++;
[resData appendData:replacement];
} else {
[resData appendBytes:bytes + index length:len];
index += len;
}
}
return resData;
}
//汉字转string
-(NSString *)charStr:(NSString *)fromUtfStr{
NSString *str=[fromUtfStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
return str;
}
//字典类型数组正序排序
-(NSArray *)sortingArry:(NSArray *)getBeforeArry andConStr:(NSString *)condStr{
NSMutableArray * sortArr = [NSMutableArray arrayWithArray:getBeforeArry];
NSSortDescriptor *des = [NSSortDescriptor sortDescriptorWithKey:condStr ascending:YES selector:@selector(localizedStandardCompare:)];
[sortArr sortUsingDescriptors:@[des]];
return [NSArray arrayWithArray:sortArr];
}
//字典类型数组按照某一字符串排序(这个方法会挨个比较数字,比如1,111,1111,2,22,222这样来排序)
-(NSArray *)sorteArry:(NSMutableArray *)mutaArry andStr:(NSString *)dicStr{
NSArray *sortDesc = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:dicStr ascending:YES]];
NSArray *sortedArr = [mutaArry sortedArrayUsingDescriptors:sortDesc];
return sortedArr;
}
//获取拼音首字母(传入汉字字符串, 返回大写拼音首字母)
-(NSString *)firstCharactor:(NSString *)str{
//转成了可变字符串
NSMutableString *pStr = [NSMutableString stringWithString:str];
//先转换为带声调的拼音
CFStringTransform((CFMutableStringRef)pStr,NULL, kCFStringTransformMandarinLatin,NO);
//再转换为不带声调的拼音
CFStringTransform((CFMutableStringRef)pStr,NULL, kCFStringTransformStripDiacritics,NO);
//转化为大写拼音
NSString *pPinYin = [pStr capitalizedString];
//获取并返回首字母
return [pPinYin substringToIndex:1];
}
//计算几天后的时间
-(NSString *)getNDay:(NSInteger)n andformat:(NSString *)format{
NSDate*nowDate = [NSDate date];
NSDate* theDate;
if(n!=0){
NSTimeInterval oneDay = 24*60*60*1; //1天的长度
theDate = [nowDate initWithTimeIntervalSinceNow: oneDay*n ];//initWithTimeIntervalSinceNow是从现在往前后推的秒数
}else{
theDate = nowDate;
}
NSDateFormatter *date_formatter = [[NSDateFormatter alloc] init];
[date_formatter setDateFormat:format];
NSString *the_date_str = [date_formatter stringFromDate:theDate];
return the_date_str;
}
//比较日期
-(NSInteger )compareDate:(NSString *)date1 withDate:(NSString *)date2 andformat:(NSString *)format{
NSInteger result;
NSDateFormatter *formatter=[NSDateFormatter new];
[formatter setDateFormat:format];
NSDate *dt1=[NSDate new];
NSDate *dt2=[NSDate new];
dt1=[formatter dateFromString:date1];
dt2=[formatter dateFromString:date2];
NSComparisonResult com=[dt1 compare:dt2];
switch (com) {
case NSOrderedAscending:
result=1;
break;
case NSOrderedDescending:
result=-1;
break;
case NSOrderedSame:
result=0;
break;
default:
break;
}
return result;
}
//判断今天星期几
-(NSString *)whichWeekDay{
NSDate *currentDate = [NSDate date];//获取当前时间,日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE"];
NSString *dateString = [dateFormatter stringFromDate:currentDate];
return dateString;
}
//将时间戳转换成格式时间
- (NSString *)getTimeFromTimestamp:(NSTimeInterval )timerval andDataTpe:(NSString *)dataType{
NSDate * myDate=[NSDate dateWithTimeIntervalSince1970:time];
//设置时间格式
NSDateFormatter * formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:dataType]; //例如@"YYYY-MM-dd HH:mm:ss"
//将时间转换为字符串
NSString *timeStr=[formatter stringFromDate:myDate];
return timeStr;
}
UI相关
//字符串名称转颜色,适用于自带的类型,如redColor
-(UIColor *)colorFromStr:(NSString *)colorStr{
SEL backColorSel = NSSelectorFromString(colorStr);
UIColor* backColor= nil;
if ([UIColor respondsToSelector: backColorSel])
backColor = [UIColor performSelector:backColorSel];
return backColor;
}
//16进制转颜色
- (UIColor *) colorWithHexString: (NSString *)color
{
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 判断前缀
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return [UIColor clearColor];
// 从六位数值中找到RGB对应的位数并转换
NSRange range;
range.location = 0;
range.length = 2;
//R、G、B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
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:1.0f];
}
//图片去色
-(UIImage *)changeGrayImage:(UIImage *)oldImage
{
int bitmapInfo = kCGImageAlphaNone;
int width = oldImage.size.width;
int height = oldImage.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate (nil,
width,
height,
8,
0,
colorSpace,
bitmapInfo);
CGColorSpaceRelease(colorSpace);
if (context == NULL) {
return nil;
}
CGContextDrawImage(context,
CGRectMake(0, 0, width, height), oldImage.CGImage);
UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
CGContextRelease(context);
return grayImage;
}
//图片从中间拉伸以充满容器,适用于气泡类型
-(UIImage *)chableImage:(NSString *)fromImageStr{
// 加载图片
UIImage *image = [UIImage imageNamed:fromImageStr];
// 设置左边端盖宽度
NSInteger leftCapWidth = image.size.width * 0.5;
// 设置上边端盖高度
NSInteger topCapHeight = image.size.height * 0.5;
UIImage *newImage = [image stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];
return newImage;
}
//根据URL拿到图片
-(UIImage *)geturlImage:(NSString *)urlimgStr{
NSURL *imgurl= [NSURL URLWithString:urlimgStr];
NSData *data = [NSData dataWithContentsOfURL:imgurl];
UIImage *image = [UIImage imageWithData:data]; // 取得图片
return image;
}
//贝塞尔曲线切圆
-(CAShapeLayer *)cutCircleSubLayer:(CGRect )rect andRadius:(CGFloat )radius{
UIBezierPath *roundPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = rect;
shapeLayer.path = roundPath.CGPath;
return shapeLayer;
}
//任意角切圆角
-(CAShapeLayer *)cutFixCirclelayer:(CGRect )frame andCutPath:(UIRectCorner )cutPath andCutnum:(CGSize )cutSize{
UIBezierPath *roundPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:cutPath cornerRadii:cutSize];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = frame;
shapeLayer.path = roundPath.CGPath;
return shapeLayer;
}
//截取view范围的图片
-(UIImage *)cutThisViewImg:(UIView *)cutView{
UIGraphicsBeginImageContextWithOptions(cutView.bounds.size, cutView.opaque, 0.0);
[cutView.layer renderInContext:UIGraphicsGetCurrentContext()];//renderInContext呈现接受者及其子范围到指定的上下文
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();//返回一个基于当前图形上下文的图片
UIGraphicsEndImageContext();//移除栈顶的基于当前位图的图形上下文
return viewImage;
}
//绘制虚线
- (void)drawDashLine:(UIView *)lineView lineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor
{
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setBounds:lineView.bounds];
[shapeLayer setPosition:CGPointMake(CGRectGetWidth(lineView.frame) / 2, CGRectGetHeight(lineView.frame))];
[shapeLayer setFillColor:[UIColor clearColor].CGColor];
// 设置虚线颜色为blackColor
[shapeLayer setStrokeColor:lineColor.CGColor];
// 设置虚线宽度
[shapeLayer setLineWidth:CGRectGetHeight(lineView.frame)];
[shapeLayer setLineJoin:kCALineJoinRound];
// 设置线宽,线间距
[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]];
// 设置路径
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL,CGRectGetWidth(lineView.frame), 0);
[shapeLayer setPath:path];
CGPathRelease(path);
// 把绘制好的虚线添加上来
[lineView.layer addSublayer:shapeLayer];
}
网友评论