美文网首页
记录iOS平时使用的技巧

记录iOS平时使用的技巧

作者: 棕枝与芦苇 | 来源:发表于2020-10-26 19:58 被阅读0次
    取图片某一像素点的颜色 在UIImage的分类中
      - (UIColor *)colorAtPixel:(CGPoint)point
    {
        if (!CGRectContainsPoint(CGRectMake(0.0f, 0.0f, self.size.width, self.size.height), point))
        {
            return nil;
        }
        
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        int bytesPerPixel = 4;
        int bytesPerRow = bytesPerPixel * 1;
        NSUInteger bitsPerComponent = 8;
        unsigned char pixelData[4] = {0, 0, 0, 0};
        
        CGContextRef context = CGBitmapContextCreate(pixelData,
                                                     1,
                                                     1,
                                                     bitsPerComponent,
                                                     bytesPerRow,
                                                     colorSpace,
                                                     kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
        CGColorSpaceRelease(colorSpace);
        CGContextSetBlendMode(context, kCGBlendModeCopy);
        
        CGContextTranslateCTM(context, -point.x, point.y - self.size.height);
        CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, self.size.width, self.size.height), self.CGImage);
        CGContextRelease(context);
        
        CGFloat red   = (CGFloat)pixelData[0] / 255.0f;
        CGFloat green = (CGFloat)pixelData[1] / 255.0f;
        CGFloat blue  = (CGFloat)pixelData[2] / 255.0f;
        CGFloat alpha = (CGFloat)pixelData[3] / 255.0f;
        
        return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    }
    
    iOS 获取汉字的拼音
    + (NSString *)transform:(NSString *)chinese
    {    
        //将NSString装换成NSMutableString 
        NSMutableString *pinyin = [chinese mutableCopy];    
        //将汉字转换为拼音(带音标)    
        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);    
        NSLog(@"%@", pinyin);    
        //去掉拼音的音标    
        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);    
        NSLog(@"%@", pinyin);    
        //返回最近结果    
        return pinyin;
     }
    
    判断view是不是指定视图的子视图
    BOOL isView = [textView isDescendantOfView:self.view];
    
    NSArray 快速求总和 最大值 最小值 和 平均值
    NSArray *array = [NSArray arrayWithObjects:@"2.0", @"2.3", @"3.0", @"4.0", @"10", nil];
    CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];
    CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];
    CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];
    CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];
    NSLog(@"%f\n%f\n%f\n%f",sum,avg,max,min);
    
    图片上绘制文字 写一个UIImage的category
    - (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;
    }
    
    字符长度,一个汉字算两个字符
    //方法一:
    - (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;
    }
    
    字符串中是否含有中文
    + (BOOL)checkIsChinese:(NSString *)string
    {
        for (int i=0; i<string.length; i++)
        {
            unichar ch = [string characterAtIndex:i];
            if (0x4E00 <= ch  && ch <= 0x9FA5)
            {
                return YES;
            }
        }
        return NO;
    }
    
    汉字转拼音
        NSString *chineseText = @"啦啦啦德玛西亚";
        if (chineseText.length > 0)
        {
            NSMutableString *ms = [[NSMutableString alloc] initWithString:chineseText];
            
            //带声标
            if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO))
            {
                NSLog(@"pinyin: %@", ms);
            }
            
            //不带声标
            if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO))
            {
                NSLog(@"pinyin: %@", ms);
            }
            
            NSString *name = [NSString stringWithString:ms];
            NSLog(@"%@",name);
        }
    
    简单的获取当前时间
    // CFAbsoluteTime其实就是double
    CFAbsoluteTime time = CFAbsoluteTimeGetCurrent();
    
    让一个视图始终在最前面
    view.layer.zPosition = 999;
    
    利用宏在扩展类添加属性
    #define ASSOCIATED(propertyName, setter, type, objc_AssociationPolicy)\
    - (type)propertyName {\
    return objc_getAssociatedObject(self, _cmd);\
    }\
    \
    - (void)setter:(type)object\
    {\
    objc_setAssociatedObject(self, @selector(propertyName), object, objc_AssociationPolicy);\
    }
    
    已某个view截屏并生成Image
    - (UIImage*)viewShot{
        UIGraphicsBeginImageContext(self.bounds.size);
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return image;
    }
    

    相关文章

      网友评论

          本文标题:记录iOS平时使用的技巧

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