美文网首页
iOS常用代码块demo1

iOS常用代码块demo1

作者: Jack_Baiyx | 来源:发表于2016-10-11 09:15 被阅读54次

    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];

    相关文章

      网友评论

          本文标题:iOS常用代码块demo1

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