iOS常用代码块demo1

2016-10-11  本文已影响54人  Jack_Baiyx

1.GCD定时器

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行

dispatch_source_set_event_handler(timer, ^{

//倒计时结束,关闭

dispatch_source_cancel(timer);

dispatch_async(dispatch_get_main_queue(), ^{

});

});

dispatch_resume(timer);

2.图片上绘制文字

- (UIImage *)imageWithTitle:(NSString *)title fontSize:(CGFloat)fontSize

{

//画布大小

CGSize size=CGSizeMake(self.size.width,self.size.height);

//创建一个基于位图的上下文

UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//opaque:NO  scale:0.0

[self drawAtPoint:CGPointMake(0.0,0.0)];

//文字居中显示在画布上

NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];

paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;

paragraphStyle.alignment=NSTextAlignmentCenter;//文字居中

//计算文字所占的size,文字居中显示在画布上

CGSize sizeText=[title boundingRectWithSize:self.size options:NSStringDrawingUsesLineFragmentOrigin

attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]}context:nil].size;

CGFloat width = self.size.width;

CGFloat height = self.size.height;

CGRect rect = CGRectMake((width-sizeText.width)/2, (height-sizeText.height)/2, sizeText.width, sizeText.height);

//绘制文字

[title drawInRect:rect withAttributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[ UIColor whiteColor],NSParagraphStyleAttributeName:paragraphStyle}];

//返回绘制的新图形

UIImage *newImage= UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

}

3.查找一个视图的所有子视图

- (NSMutableArray *)allSubViewsForView:(UIView *)view

{

NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];

for (UIView *subView in view.subviews)

{

[array addObject:subView];

if (subView.subviews.count > 0)

{

[array addObjectsFromArray:[self allSubViewsForView:subView]];

}

}

return array;

}

4.计算文件大小

//文件大小

- (long long)fileSizeAtPath:(NSString *)path

{

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:path])

{

long long size = [fileManager attributesOfItemAtPath:path error:nil].fileSize;

return size;

}

return 0;

}

//文件夹大小

- (long long)folderSizeAtPath:(NSString *)path

{

NSFileManager *fileManager = [NSFileManager defaultManager];

long long folderSize = 0;

if ([fileManager fileExistsAtPath:path])

{

NSArray *childerFiles = [fileManager subpathsAtPath:path];

for (NSString *fileName in childerFiles)

{

NSString *fileAbsolutePath = [path stringByAppendingPathComponent:fileName];

if ([fileManager fileExistsAtPath:fileAbsolutePath])

{

long long size = [fileManager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;

folderSize += size;

}

}

}

return folderSize;

}

5.UIView的设置部分圆角

CGRect rect = view.bounds;

CGSize radio = CGSizeMake(30, 30);//圆角尺寸

UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//这只圆角位置

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];

CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayer

masklayer.frame = view.bounds;

masklayer.path = path.CGPath;//设置路径

view.layer.mask = mask layer;

6.计算字符串字符长度,一个汉字算两个字符

//方法一:

- (int)convertToInt:(NSString*)strtemp

{

int strlength = 0;

char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];

for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++)

{

if (*p)

{

p++;

strlength++;

}

else

{

p++;

}

}

return strlength;

}

//方法二:

-(NSUInteger) unicodeLengthOfString: (NSString *) text

{

NSUInteger asciiLength = 0;

for (NSUInteger i = 0; i < text.length; i++)

{

unichar uc = [text characterAtIndex: i];

asciiLength += isascii(uc) ? 1 : 2;

}

return asciiLength;

}

防止滚动视图手势覆盖侧滑手势

[scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];

去掉导航栏返回的标题

[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)forBarMetrics:UIBarMetricsDefault];

上一篇下一篇

猜你喜欢

热点阅读