Bläddra i källkod

1.merge master

wenweiwei 3 år sedan
förälder
incheckning
a36605d34a

+ 1 - 1
BFCommonKit.podspec

@@ -8,7 +8,7 @@
 
 
 Pod::Spec.new do |s|
 Pod::Spec.new do |s|
   s.name             = 'BFCommonKit'
   s.name             = 'BFCommonKit'
-  s.version          = '1.4.6'
+  s.version          = '1.4.9'
   s.summary          = 'A short description of BFCommonKit.'
   s.summary          = 'A short description of BFCommonKit.'
   s.swift_version    = '5.0'
   s.swift_version    = '5.0'
 # This description is used to generate tags and improve search results.
 # This description is used to generate tags and improve search results.

+ 1 - 1
BFCommonKit/Classes/BFBase/Controller/PQBaseViewController.swift

@@ -178,7 +178,7 @@ open class PQBaseViewController: UIViewController, UIGestureRecognizerDelegate {
         return isHiddenStatus
         return isHiddenStatus
     }
     }
 
 
-    /// 禁止滑动返回
+    /// 监听滑动返回
     /// - Returns: <#description#>
     /// - Returns: <#description#>
     public func disablePopGesture() -> PQBaseViewController {
     public func disablePopGesture() -> PQBaseViewController {
         let traget = navigationController?.interactivePopGestureRecognizer?.delegate
         let traget = navigationController?.interactivePopGestureRecognizer?.delegate

+ 12 - 2
BFCommonKit/Classes/BFBase/View/PQLoadingHUB.swift

@@ -62,6 +62,9 @@ public class PQLoadingHUBView: UIView {
 
 
     /// 开始加载
     /// 开始加载
     public func loading() {
     public func loading() {
+        if loadingImage.superview == nil {
+            addSubview(loadingImage)
+        }
         loadingImage.displayGIF(data: nil, images: gifImages, repeatCount: .max, duration: duration ?? 2)
         loadingImage.displayGIF(data: nil, images: gifImages, repeatCount: .max, duration: duration ?? 2)
     }
     }
 
 
@@ -116,7 +119,7 @@ public class PQLoadingHUB: NSObject {
         }
         }
     }
     }
 
 
-    public func showHUB(superView: UIView, isVerticality: Bool = false,lodingColor:UIColor? = nil) {
+    public func showHUB(superView: UIView, isVerticality: Bool = false,lodingColor:UIColor? = nil,topMargin:CGFloat? = nil) {
         DispatchQueue.main.async { [weak self] in
         DispatchQueue.main.async { [weak self] in
             if superView.viewWithTag(self!.viewTag) == nil {
             if superView.viewWithTag(self!.viewTag) == nil {
                 let hubW: CGFloat = 100
                 let hubW: CGFloat = 100
@@ -124,12 +127,19 @@ public class PQLoadingHUB: NSObject {
                 let supH: CGFloat = superView.frame.height
                 let supH: CGFloat = superView.frame.height
                 let hubY: CGFloat = isVerticality ? ((supW - hubW) / 2) : ((supH - hubW) / 2)
                 let hubY: CGFloat = isVerticality ? ((supW - hubW) / 2) : ((supH - hubW) / 2)
                 let hubX: CGFloat = isVerticality ? ((supH - hubW) / 2) : ((supW - hubW) / 2)
                 let hubX: CGFloat = isVerticality ? ((supH - hubW) / 2) : ((supW - hubW) / 2)
-                let loadingHUB: PQLoadingHUBView = PQLoadingHUBView(frame: CGRect(x: hubX, y: hubY, width: 100, height: 100))
+                let loadingHUB: PQLoadingHUBView = PQLoadingHUBView(frame: CGRect(x: hubX, y: topMargin != nil ? topMargin ?? 0: hubY, width: 100, height: 100))
                 loadingHUB.lodingColor = lodingColor
                 loadingHUB.lodingColor = lodingColor
                 loadingHUB.tag = self!.viewTag
                 loadingHUB.tag = self!.viewTag
                 superView.addSubview(loadingHUB)
                 superView.addSubview(loadingHUB)
                 loadingHUB.loading()
                 loadingHUB.loading()
                 self?.isLoading = true
                 self?.isLoading = true
+            } else if superView.viewWithTag(self!.viewTag) != nil {
+                if superView.viewWithTag(self!.viewTag)?.superview == nil {
+                    superView.addSubview(superView.viewWithTag(self!.viewTag)!)
+                } else {
+                    superView.bringSubviewToFront(superView.viewWithTag(self!.viewTag)!)
+                }
+                (superView.viewWithTag(self!.viewTag) as? PQLoadingHUBView)?.loading()
             }
             }
         }
         }
     }
     }

+ 0 - 192
BFCommonKit/Classes/BFCategorys/UIControl+NXCategory.h

@@ -30,195 +30,3 @@
 @property(nonatomic) BOOL ignoreEvent;
 @property(nonatomic) BOOL ignoreEvent;
 
 
 @end
 @end
-
-typedef NS_ENUM(NSInteger, NXCropImageStyle) {
-    NXCropImageStyleRight = 0,               // 右半部分
-    NXCropImageStyleCenter = 1,              // 中间部分
-    NXCropImageStyleLeft = 2,                // 左半部分
-    NXCropImageStyleRightOneOfThird = 3,     // 右侧三分之一部分
-    NXCropImageStyleCenterOneOfThird = 4,    // 中间三分之一部分
-    NXCropImageStyleLeftOneOfThird = 5,      // 左侧三分之一部分
-    NXCropImageStyleRightQuarter = 6,        // 右侧四分之一部分
-    NXCropImageStyleCenterRightQuarter = 7,  // 中间右侧四分之一部分
-    NXCropImageStyleCenterLeftQuarter = 8,   // 中间左侧四分之一部分
-    NXCropImageStyleLeftQuarter = 9,         // 左侧四分之一部分
-};
-
-@interface UIImage (NXCategory)
-
-#pragma mark - blur 效果
-/**
- 给图片打马赛克
- @param image 原始图片
- @param blur 值越 blurry 就越大
- @return 处理后的图片
- */
-+ (UIImage *)nx_blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur;
-
-/**
-  boxblur image 这个要在整理
-
-  @param toBlurImage 要处理的图片
-  @return 处理后图片
- */
-+ (UIImage *)nx_boxblurImage:(UIImage *)toBlurImage;
-
-#pragma mark - 旋转
-/**
-  照片旋转90度,如从系统相册中取出的原图要转正
-
- @param aImage 原图
- @param isFront YES 为前置拍照
- @return 转正后图片
- */
-+ (UIImage *)nx_fixOrientation:(UIImage *)aImage isFront:(BOOL)isFront;
-
-/**
- 旋转图片
-
- @param image 原图
- @param orientation 旋转的方向
- @return 旋转后的图片
- */
-+ (UIImage *)nx_rotationImage:(UIImage *)image orientation:(UIImageOrientation)orientation;
-
-#pragma mark - 缩放
-/**
- 等比缩放图片
-
- @param size 放到的大小(单位为像素)
- @return 处理后的图片
- */
-- (UIImage *)nx_scaleToSize:(CGSize)size;
-
-/**
- 等比缩放图片 按照最短边缩放
- @param maxLength 边长最大值 (单位为像素)
- @return 处理后的图片
- */
-- (UIImage *)nx_scaleWithMaxLength:(float)maxLength;
-
-#pragma mark - 截取
-/**
- 截取 uiimage 指定区域
-
- @param style 类型为 NXCropImageStyle
- @return 裁剪后的图片
- */
-- (UIImage *)nx_imageByCroppingWithStyle:(NXCropImageStyle)style;
-
-/**
-  截取 uiimage 指定区域
-
- @param rect 裁剪区域
- @return 裁剪后的图片
- */
-- (UIImage *)imageByCroppingWithRect:(CGRect)rect;
-
-
-/**
- 将图片按照最短边等比截取图片中间部分
-
- @return 截取后到正方形图片
- */
-- (UIImage *)nx_cropImageToSquare;
-
-/**
- *  将图片等比绘制到正方形画布中并重新生成新图
- *
- *  @return 处理后的图片
- */
-- (UIImage *)nx_zoomImageToSquare;
-
-/**
- 将图片等比缩放的指定的画布中并生成新图。(跟画布比例不一样的做 左右或者上下留白处理)
-
- @param size 指定画布大小
- @return 处理后的新图
- */
-- (UIImage *)nx_zoomWithSize:(CGSize)size;
-
-/**
- 高清截屏 opaque 为no 有透明度速度会慢一些
-
- @param view 指定的VIEW
- @return 截屏图片
- */
-+ (UIImage *)nx_screenHierarchyShots:(UIView *)view;
-
-/**
- 高清截屏
-
- @param view 指定的VIEW
- @param opaque 透明开关,如果图形完全不用透明,设置为YES以优化位图的存储。
- @return 截屏图片
- */
-+ (UIImage *)nx_screenHierarchyShots:(UIView *)view isOpaque:(BOOL)opaque;
-
-/**
- 获得裁剪图片
-
- e.g.
- int squalWidth = MIN(self.clipImage.size.width, self.clipImage.size.height);
-
- float clipX = _clipScroll.contentOffset.x;
- float clipY = _clipScroll.contentOffset.y;
- CGRect rect = CGRectMake(clipX, clipY, NX_MAIN_SCREEN_WIDTH, NX_MAIN_SCREEN_WIDTH);
-
- clipedImage =
- [UIImage nx_cropImageView:_bigImageView toRect:rect zoomScale:1
- containerView:_backView outputWith:squalWidth];
-
- @param imageView 原始VIEW
- @param rect 截取区域
- @param zoomScale 缩放大小
- @param containerView 显示区域VIEW
- @param outputWith 输出大小
- @return 处理后图片
- */
-+ (UIImage *)nx_cropImageView:(UIImageView *)imageView
-                       toRect:(CGRect)rect
-                    zoomScale:(double)zoomScale
-                containerView:(UIView *)containerView
-                   outputWith:(CGFloat)outputWith;
-
-#pragma mark - 圆角
-/**
- 切圆角 可防止离屏渲染
- e.g.
- UIImage *placeHolder = [[UIImage imageNamed:@"userIcon"] circleImage];
-
- @param img 原图片
- @return 处理后的图片
- */
-+ (UIImage *)nx_circleImage:(UIImage *)img;
-
-/** 切圆角 可防止离屏渲染
- * @param image 需要进行圆角的图片
- * @param direction 切割的方向
- * @param cornerRadii 圆角半径
- * @param borderWidth 边框宽度
- * @param borderColor 边框颜色
- * @param backgroundColor 背景色
- * @return 处理后的图片
- */
-+ (UIImage *)nx_circleImage:(UIImage *)image cuttingDirection:(UIRectCorner)direction cornerRadii:(CGFloat)cornerRadii borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor backgroundColor:(UIColor *)backgroundColor;
-
-/**
- 获取当前屏幕大小的的开屏页图片
- 
- @return 开屏页图片
- */
-+ (UIImage *)nx_launchImage;
-
-
-/**
- 把指定颜色背景变成透明
-
- @param image 原图数据
- @param color 原背景色
- @return 背景透明后的图
- */
-+ (UIImage*)transparentBackClear:(UIImage*)image color:(UIColor*)color;
-
-@end

+ 0 - 634
BFCommonKit/Classes/BFCategorys/UIControl+NXCategory.m

@@ -66,637 +66,3 @@ static const char *UIControl_ignoreEvent = "UIControl_ignoreEvent";
 }
 }
 
 
 @end
 @end
-
-#import <Accelerate/Accelerate.h>
-
-@implementation UIImage (NXCategory)
-
-#pragma mark - blur 效果
-+ (UIImage *)nx_blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur
-{
-    CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
-    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"
-                                  keysAndValues:kCIInputImageKey, inputImage, @"inputRadius", @(blur), nil];
-
-    CIImage *outputImage = filter.outputImage;
-    CIContext *context = [CIContext contextWithOptions:nil];
-    CGImageRef outImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
-    return [UIImage imageWithCGImage:outImage];
-}
-
-+ (UIImage *)nx_boxblurImage:(UIImage *)toBlurImage
-{
-    UIImage *newImage =
-
-        [toBlurImage nx_scaleToSize:CGSizeMake(toBlurImage.size.width / 2., toBlurImage.size.height / 2.)];
-
-    NSData *jpgData = UIImageJPEGRepresentation(newImage, 0.01);
-
-    UIImage *image = [UIImage imageWithData:jpgData];
-    CGFloat blur = 0.3f;
-
-    int boxSize = (int)(blur * 40);
-    boxSize = boxSize - (boxSize % 2) + 1;
-
-    CGImageRef img = image.CGImage;
-    vImage_Buffer inBuffer, outBuffer;
-    vImage_Error error;
-    void *pixelBuffer;
-
-    // create vImage_Buffer with data from CGImageRef
-    CGDataProviderRef inProvider = CGImageGetDataProvider(img);
-    CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
-
-    inBuffer.width = CGImageGetWidth(img);
-    inBuffer.height = CGImageGetHeight(img);
-    inBuffer.rowBytes = CGImageGetBytesPerRow(img);
-
-    inBuffer.data = (void *)CFDataGetBytePtr(inBitmapData);
-
-    // create vImage_Buffer for output
-    pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
-
-    if (pixelBuffer == NULL) NSLog(@"No pixelbuffer");
-
-    outBuffer.data = pixelBuffer;
-    outBuffer.width = CGImageGetWidth(img);
-    outBuffer.height = CGImageGetHeight(img);
-    outBuffer.rowBytes = CGImageGetBytesPerRow(img);
-
-    // perform convolution
-    error =
-        vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend)
-            ?: vImageBoxConvolve_ARGB8888(&outBuffer, &inBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend)
-                   ?: vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL,
-                                                 kvImageEdgeExtend);
-
-    if (error)
-    {
-        NSLog(@"error from convolution %ld", error);
-    }
-
-    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
-    CGContextRef ctx = CGBitmapContextCreate(outBuffer.data, outBuffer.width, outBuffer.height, 8, outBuffer.rowBytes,
-                                             colorSpace, (CGBitmapInfo)kCGImageAlphaNoneSkipLast);
-    CGImageRef imageRef = CGBitmapContextCreateImage(ctx);
-    UIImage *returnImage = [UIImage imageWithCGImage:imageRef];
-
-    // clean up
-    CGContextRelease(ctx);
-    CGColorSpaceRelease(colorSpace);
-
-    free(pixelBuffer);
-    CFRelease(inBitmapData);
-    CGImageRelease(imageRef);
-
-    return returnImage;
-}
-
-#pragma mark - 旋转
-+ (UIImage *)nx_fixOrientation:(UIImage *)aImage isFront:(BOOL)isFront;
-{
-    // No-op if the orientation is already correct
-    if (aImage.imageOrientation == UIImageOrientationUp) return aImage;
-
-    // We need to calculate the proper transformation to make the image upright.
-    // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
-    CGAffineTransform transform = CGAffineTransformIdentity;
-
-    if (isFront)
-    {
-        transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);
-        transform = CGAffineTransformScale(transform, -1, 1);
-    }
-
-    switch (aImage.imageOrientation)
-    {
-        case UIImageOrientationDown:
-        case UIImageOrientationDownMirrored:
-            transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);
-            transform = CGAffineTransformRotate(transform, M_PI);
-            break;
-
-        case UIImageOrientationLeft:
-        case UIImageOrientationLeftMirrored:
-            transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);
-            transform = CGAffineTransformRotate(transform, M_PI_2);
-            break;
-
-        case UIImageOrientationRight:
-        case UIImageOrientationRightMirrored:
-            transform = CGAffineTransformTranslate(transform, 0, aImage.size.height);
-            transform = CGAffineTransformRotate(transform, -M_PI_2);
-            break;
-        default:
-            break;
-    }
-
-    switch (aImage.imageOrientation)
-    {
-        case UIImageOrientationUpMirrored:
-        case UIImageOrientationDownMirrored:
-            transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);
-            transform = CGAffineTransformScale(transform, -1, 1);
-            break;
-
-        case UIImageOrientationLeftMirrored:
-        case UIImageOrientationRightMirrored:
-            transform = CGAffineTransformTranslate(transform, aImage.size.height, 0);
-            transform = CGAffineTransformScale(transform, -1, 1);
-            break;
-        default:
-            break;
-    }
-
-    // Now we draw the underlying CGImage into a new context, applying the
-    // transform
-    // calculated above.
-    CGContextRef ctx =
-        CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height, CGImageGetBitsPerComponent(aImage.CGImage),
-                              0, CGImageGetColorSpace(aImage.CGImage), CGImageGetBitmapInfo(aImage.CGImage));
-    CGContextConcatCTM(ctx, transform);
-    switch (aImage.imageOrientation)
-    {
-        case UIImageOrientationLeft:
-        case UIImageOrientationLeftMirrored:
-        case UIImageOrientationRight:
-        case UIImageOrientationRightMirrored:
-            // Grr...
-            CGContextDrawImage(ctx, CGRectMake(0, 0, aImage.size.height, aImage.size.width), aImage.CGImage);
-            break;
-
-        default:
-            CGContextDrawImage(ctx, CGRectMake(0, 0, aImage.size.width, aImage.size.height), aImage.CGImage);
-            break;
-    }
-
-    // And now we just create a new UIImage from the drawing context
-    CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
-    UIImage *img = [UIImage imageWithCGImage:cgimg];
-    CGContextRelease(ctx);
-    CGImageRelease(cgimg);
-    return img;
-}
-
-// 旋转
-+ (UIImage *)nx_rotationImage:(UIImage *)image orientation:(UIImageOrientation)orientation
-{
-    long double rotate = 0.0;
-    CGRect rect;
-    float translateX = 0;
-    float translateY = 0;
-    float scaleX = 1.0;
-    float scaleY = 1.0;
-
-    switch (orientation)
-    {
-        case UIImageOrientationLeft:
-            rotate = M_PI_2;
-            rect = CGRectMake(0, 0, image.size.height, image.size.width);
-            translateX = 0;
-            translateY = -rect.size.width;
-            scaleY = rect.size.width / rect.size.height;
-            scaleX = rect.size.height / rect.size.width;
-            break;
-        case UIImageOrientationRight:
-            rotate = 3 * M_PI_2;
-            rect = CGRectMake(0, 0, image.size.height, image.size.width);
-            translateX = -rect.size.height;
-            translateY = 0;
-            scaleY = rect.size.width / rect.size.height;
-            scaleX = rect.size.height / rect.size.width;
-            break;
-        case UIImageOrientationDown:
-            rotate = M_PI;
-            rect = CGRectMake(0, 0, image.size.width, image.size.height);
-            translateX = -rect.size.width;
-            translateY = -rect.size.height;
-            break;
-        default:
-            rotate = 0.0;
-            rect = CGRectMake(0, 0, image.size.width, image.size.height);
-            translateX = 0;
-            translateY = 0;
-            break;
-    }
-
-    UIGraphicsBeginImageContext(rect.size);
-    CGContextRef context = UIGraphicsGetCurrentContext();
-    //做CTM变换
-    CGContextTranslateCTM(context, 0.0, rect.size.height);
-    CGContextScaleCTM(context, 1.0, -1.0);
-    CGContextRotateCTM(context, rotate);
-    CGContextTranslateCTM(context, translateX, translateY);
-
-    CGContextScaleCTM(context, scaleX, scaleY);
-    //绘制图片
-    CGContextDrawImage(context, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);
-
-    UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
-    NSLog(@"image size %f---%f", image.size.width, image.size.height);
-    UIGraphicsEndImageContext();
-    return newPic;
-}
-
-#pragma mark - 缩放
-- (UIImage *)nx_scaleToSize:(CGSize)size
-{
-    CGFloat width = CGImageGetWidth(self.CGImage);
-    CGFloat height = CGImageGetHeight(self.CGImage);
-
-    float verticalRadio = size.height * 1.0 / height;
-    float horizontalRadio = size.width * 1.0 / width;
-
-    float radio = 1;
-    if (verticalRadio > 1 && horizontalRadio > 1)
-    {
-        radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;
-    }
-    else
-    {
-        radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;
-    }
-
-    width = width * radio;
-    height = height * radio;
-
-    int xPos = (size.width - width) / 2;
-    int yPos = (size.height - height) / 2;
-
-    // 创建一个bitmap的context
-    // 并把它设置成为当前正在使用的context
-    UIGraphicsBeginImageContext(size);
-
-    // 绘制改变大小的图片
-    [self drawInRect:CGRectMake(xPos, yPos, width, height)];
-
-    // 从当前context中创建一个改变大小后的图片
-    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
-
-    // 使当前的context出堆栈
-    UIGraphicsEndImageContext();
-
-    // 返回新的改变大小后的图片
-    return scaledImage;
-}
-
-//按照最短边缩放 maxlength 边长最大值
-- (UIImage *)nx_scaleWithMaxLength:(float)maxLength
-{
-    if (self.size.width > maxLength || self.size.height > maxLength)
-    {
-        float maxWidth = maxLength;
-        float maxHeight = maxLength;
-
-        if (self.size.width != self.size.height)
-        {
-            if (self.size.width > self.size.height)
-            {
-                //按照宽 来缩放
-                float imageScale = maxLength / self.size.width;
-                maxHeight = self.size.height * imageScale;
-            }
-            else if (self.size.width < self.size.height)
-            {
-                float imageScale = maxLength / self.size.height;
-
-                maxWidth = self.size.width * imageScale;
-            }
-        }
-        // 返回新的改变大小后的图片
-        return [self nx_scaleToSize:CGSizeMake(maxWidth, maxHeight)];
-    }
-
-    return self;
-}
-
-#pragma mark - 截取
-- (UIImage *)nx_imageByCroppingWithStyle:(NXCropImageStyle)style
-{
-    CGRect rect = CGRectZero;
-    switch (style)
-    {
-        case NXCropImageStyleLeft:
-            rect = CGRectMake(0, 0, self.size.width / 2, self.size.height);
-            break;
-        case NXCropImageStyleCenter:
-            rect = CGRectMake(self.size.width / 4, 0, self.size.width / 2, self.size.height);
-            break;
-        case NXCropImageStyleRight:
-            rect = CGRectMake(self.size.width / 2, 0, self.size.width / 2, self.size.height);
-            break;
-        case NXCropImageStyleLeftOneOfThird:
-            rect = CGRectMake(0, 0, self.size.width / 3, self.size.height);
-            break;
-        case NXCropImageStyleCenterOneOfThird:
-            rect = CGRectMake(self.size.width / 3, 0, self.size.width / 3, self.size.height);
-            break;
-        case NXCropImageStyleRightOneOfThird:
-            rect = CGRectMake(self.size.width / 3 * 2, 0, self.size.width / 3, self.size.height);
-            break;
-        case NXCropImageStyleLeftQuarter:
-            rect = CGRectMake(0, 0, self.size.width / 4, self.size.height);
-            break;
-        case NXCropImageStyleCenterLeftQuarter:
-            rect = CGRectMake(self.size.width / 4, 0, self.size.width / 4, self.size.height);
-            break;
-        case NXCropImageStyleCenterRightQuarter:
-            rect = CGRectMake(self.size.width / 4 * 2, 0, self.size.width / 4, self.size.height);
-            break;
-        case NXCropImageStyleRightQuarter:
-            rect = CGRectMake(self.size.width / 4 * 3, 0, self.size.width / 4, self.size.height);
-            break;
-        default:
-            break;
-    }
-
-    return [self imageByCroppingWithRect:rect];
-}
-
-- (UIImage *)imageByCroppingWithRect:(CGRect)rect
-{
-    CGImageRef imageRef = self.CGImage;
-    CGImageRef imagePartRef = CGImageCreateWithImageInRect(imageRef, rect);
-    UIImage *cropImage = [UIImage imageWithCGImage:imagePartRef];
-    CGImageRelease(imagePartRef);
-    return cropImage;
-}
-
-- (UIImage *)nx_cropImageToSquare{
-
-    if(self.size.width == self.size.height)
-    {
-        return self;
-    }
-    double w = self.size.width;
-    double h = self.size.height;
-    double m = MIN(w, h);
-    CGRect rect = CGRectMake((self.size.width - m)/2.0f , (self.size.height - m)/2.0f, m, m);
-    return [self imageByCroppingWithRect:rect];
-}
-
-- (UIImage *)nx_zoomWithSize:(CGSize)size{
-
-    if(self == nil)
-    {
-        return nil;
-    }
-    
-    double w  = self.size.width;
-    double h =self.size.height;
-    double vRatio = w / size.width;
-    double hRatio = h / size.height;
-    double ratio = MAX(vRatio, hRatio);
-    w /= ratio;
-    h /= ratio;
-    CGRect drawRect = CGRectMake((size.width - w)/2.0f , (size.height - h)/2.0f, w, h);
-    // 创建一个bitmap的context
-    // 并把它设置成为当前正在使用的context
-    UIGraphicsBeginImageContext(size);
-    // 绘制改变大小的图片
-    [self drawInRect:drawRect];
-    // 从当前context中创建一个改变大小后的图片
-    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
-    // 使当前的context出堆栈
-    UIGraphicsEndImageContext();
-    return  scaledImage;
-    
-}
-
-
-- (UIImage *)nx_zoomImageToSquare
-{
-    if (self == nil)
-    {
-        return nil;
-    }
-    double tw = MIN(self.size.width, self.size.height);
-
-    return [self nx_scaleToSize:CGSizeMake(tw, tw)];
-}
-
-//截屏 有透明的
-+ (UIImage *)nx_screenHierarchyShots:(UIView *)view { return [UIImage nx_screenHierarchyShots:view isOpaque:NO]; }
-//高清截屏 opaque 是否有透明图层
-+ (UIImage *)nx_screenHierarchyShots:(UIView *)view isOpaque:(BOOL)opaque
-{
-    // size——同UIGraphicsBeginImageContext
-    // opaque—透明开关,如果图形完全不用透明,设置为YES以优化位图的存储。
-    // scale—–缩放因子
-    UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, 0);
-    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
-    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
-    UIGraphicsEndImageContext();
-    return image;
-}
-
-/// 获得裁剪后的图片
-+ (UIImage *)nx_cropImageView:(UIImageView *)imageView
-                       toRect:(CGRect)rect
-                    zoomScale:(double)zoomScale
-                containerView:(UIView *)containerView
-                   outputWith:(CGFloat)outputWith
-{
-    CGAffineTransform transform = CGAffineTransformIdentity;
-    // 平移的处理
-    CGRect imageViewRect = [imageView convertRect:imageView.bounds toView:containerView];
-    CGPoint point = CGPointMake(imageViewRect.origin.x + imageViewRect.size.width / 2,
-                                imageViewRect.origin.y + imageViewRect.size.height / 2);
-
-    CGPoint zeroPoint =
-        CGPointMake(CGRectGetWidth(containerView.frame) / 2., CGRectGetHeight(containerView.frame) / 2.);
-
-    CGPoint translation = CGPointMake(point.x - zeroPoint.x, point.y - zeroPoint.y);
-    transform = CGAffineTransformTranslate(transform, translation.x, translation.y);
-    // 缩放的处理
-    transform = CGAffineTransformScale(transform, zoomScale, zoomScale);
-
-    CGImageRef imageRef = [self nx_newTransformedImage:transform
-                                           sourceImage:imageView.image.CGImage
-                                            sourceSize:imageView.image.size
-                                           outputWidth:outputWith
-                                              cropSize:rect.size
-                                         imageViewSize:imageView.frame.size];
-    UIImage *cropedImage = [UIImage imageWithCGImage:imageRef];
-    CGImageRelease(imageRef);
-    return cropedImage;
-}
-
-+ (CGImageRef)nx_newTransformedImage:(CGAffineTransform)transform
-                         sourceImage:(CGImageRef)sourceImage
-                          sourceSize:(CGSize)sourceSize
-                         outputWidth:(CGFloat)outputWidth
-                            cropSize:(CGSize)cropSize
-                       imageViewSize:(CGSize)imageViewSize
-{
-    CGImageRef source = [self nx_newScaledImage:sourceImage toSize:sourceSize];
-
-    CGFloat aspect = cropSize.height / cropSize.width;
-    CGSize outputSize = CGSizeMake(outputWidth, outputWidth * aspect);
-
-    CGContextRef context =
-        CGBitmapContextCreate(NULL, outputSize.width, outputSize.height, CGImageGetBitsPerComponent(source), 0,
-                              CGImageGetColorSpace(source), CGImageGetBitmapInfo(source));
-    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
-    CGContextFillRect(context, CGRectMake(0, 0, outputSize.width, outputSize.height));
-
-    CGAffineTransform uiCoords =
-        CGAffineTransformMakeScale(outputSize.width / cropSize.width, outputSize.height / cropSize.height);
-    uiCoords = CGAffineTransformTranslate(uiCoords, cropSize.width / 2.0, cropSize.height / 2.0);
-    uiCoords = CGAffineTransformScale(uiCoords, 1.0, -1.0);
-    CGContextConcatCTM(context, uiCoords);
-
-    CGContextConcatCTM(context, transform);
-    CGContextScaleCTM(context, 1.0, -1.0);
-
-    CGContextDrawImage(context, CGRectMake(-imageViewSize.width / 2, -imageViewSize.height / 2.0, imageViewSize.width,
-                                           imageViewSize.height),
-                       source);
-    CGImageRef resultRef = CGBitmapContextCreateImage(context);
-    CGContextRelease(context);
-    CGImageRelease(source);
-    return resultRef;
-}
-
-+ (CGImageRef)nx_newScaledImage:(CGImageRef)source toSize:(CGSize)size
-{
-    CGSize srcSize = size;
-    CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
-    CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, 8, 0, rgbColorSpace,
-                                                 kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
-    CGColorSpaceRelease(rgbColorSpace);
-
-    CGContextSetInterpolationQuality(context, kCGInterpolationNone);
-    CGContextTranslateCTM(context, size.width / 2, size.height / 2);
-
-    CGContextDrawImage(context, CGRectMake(-srcSize.width / 2, -srcSize.height / 2, srcSize.width, srcSize.height),
-                       source);
-
-    CGImageRef resultRef = CGBitmapContextCreateImage(context);
-    CGContextRelease(context);
-    return resultRef;
-}
-
-#pragma mark - 圆角
-+ (UIImage *)nx_circleImage:(UIImage *)img
-{
-   return [self nx_circleImage:img cuttingDirection:UIRectCornerAllCorners cornerRadii:img.size.height/2. borderWidth:0 borderColor: [UIColor clearColor] backgroundColor: [UIColor clearColor]];
-}
-
-+ (UIImage *)nx_circleImage:(UIImage *)image cuttingDirection:(UIRectCorner)direction cornerRadii:(CGFloat)cornerRadii borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor backgroundColor:(UIColor *)backgroundColor
-{
-    //处理后的数据
-    UIImage * newImage = nil;
-    if (image.size.height != 0 && image.size.width != 0)
-    {
-        if (cornerRadii == 0)
-        {
-            cornerRadii = image.size.height / 2;
-        }
-        CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
-        UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
-        CGContextRef currnetContext = UIGraphicsGetCurrentContext();
-        if (currnetContext) {
-            
-            UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:direction cornerRadii:CGSizeMake(cornerRadii - borderWidth, cornerRadii - borderWidth)];
-            CGContextAddPath(currnetContext,path.CGPath);
-            CGContextClip(currnetContext);
-            
-            [image drawInRect:rect];
-            [borderColor setStroke];// 画笔颜色
-            [backgroundColor setFill];// 填充颜色
-            [path stroke];
-            [path fill];
-            newImage = UIGraphicsGetImageFromCurrentImageContext();
-            UIGraphicsEndImageContext();
-        }
-        
-        return newImage;
-    }
-    
-    return newImage;
-}
-
-+ (UIImage *)nx_launchImage
-{
-    CGSize viewSize  = [UIScreen mainScreen].bounds.size;
-    
-    NSString * viewOrientation = @"Portrait";
-    NSString * launchImageName = nil;
-    NSArray * imageDict = [[[NSBundle mainBundle] infoDictionary]valueForKey:@"UILaunchImages"];
-    for (NSDictionary  * dict in imageDict)
-    {
-        CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
-        if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
-        {
-            launchImageName = dict[@"UILaunchImageName"];
-        }
-    }
-    UIImage * launchImage = [UIImage imageNamed:launchImageName];
-    
-    return launchImage;
-}
-
-
-+ (UIImage*)transparentBackClear:(UIImage*)image color:(UIColor*)color
-{
-    // 分配内存
-    const int imageWidth = image.size.width;
-    const int imageHeight = image.size.height;
-    size_t bytesPerRow = imageWidth * 4;
-    uint32_t* rgbImageBuf = (uint32_t*)malloc(bytesPerRow * imageHeight);
-    
-    // 创建context
-    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
-    CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace,
-                                                 kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
-    CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage);
-    
-    // 遍历像素
-    int pixelNum = imageWidth * imageHeight;
-    uint32_t* pCurPtr = rgbImageBuf;
-    for (int i = 0; i < pixelNum; i++, pCurPtr++)
-    {
-        if ((*pCurPtr & 0xFFFFFF00) == 0xffffff00) {
-            
-            // 此处把白色背景颜色给变为透明
-            uint8_t* ptr = (uint8_t*)pCurPtr;
-            ptr[0] = 0;
-            
-        }else{
-            
-            // 改成下面的代码,会将图片转成想要的
-            //            uint8_t* ptr = (uint8_t*)pCurPtr;
-            //
-            //            ptr[3] = 0; //0~255
-            //
-            //            ptr[2] = 0;
-            //
-            //            ptr[1] = 0;
-        }
-    }
-    
-    // 将内存转成image
-    CGDataProviderRef dataProvider =CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight, ProviderReleaseData);
-    
-    CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight,8, 32, bytesPerRow, colorSpace,
-                                        kCGImageAlphaLast |kCGBitmapByteOrder32Little, dataProvider,
-                                        NULL, true,kCGRenderingIntentDefault);
-    CGDataProviderRelease(dataProvider);
-    
-    UIImage* resultUIImage = [UIImage imageWithCGImage:imageRef];
-    
-    // 释放
-    CGImageRelease(imageRef);
-    CGContextRelease(context);
-    CGColorSpaceRelease(colorSpace);
-    
-    return resultUIImage;
-}
-
-void ProviderReleaseData (void *info, const void *data, size_t size)
-{
-    free((void*)data);
-}
-
-@end

+ 3 - 4
BFCommonKit/Classes/BFEnums/Enums.swift

@@ -144,11 +144,8 @@ public  enum  PAGESOURCE: String {
     case sp_cmunit_loginPage = "loginPage" // 登陆页
     case sp_cmunit_loginPage = "loginPage" // 登陆页
     case sp_cmunit_interestedTopic = "hotTopicRecommendWindow" // 热门话题推荐页
     case sp_cmunit_interestedTopic = "hotTopicRecommendWindow" // 热门话题推荐页
     case sp_cmunit_cmtMsgPage = "commentMessagePage" // 评论消息页
     case sp_cmunit_cmtMsgPage = "commentMessagePage" // 评论消息页
-<<<<<<< HEAD
     case sp_cmunit_mePage = "mePage" // 我的页
     case sp_cmunit_mePage = "mePage" // 我的页
     case sp_cmunit_userPage = "homePage" // 个人主页
     case sp_cmunit_userPage = "homePage" // 个人主页
-=======
-    
     //点击上报:首页点击底部“我的”页面入口
     //点击上报:首页点击底部“我的”页面入口
     case sp_shanyinApp_main = "shanyinApp-main"
     case sp_shanyinApp_main = "shanyinApp-main"
     //页面曝光上报:“我的”页面曝光
     //页面曝光上报:“我的”页面曝光
@@ -158,7 +155,6 @@ public  enum  PAGESOURCE: String {
         // 获取AppName
         // 获取AppName
         return app + self.rawValue
         return app + self.rawValue
     }
     }
->>>>>>> 562e8c01406fbc811364b82548c44e4dc165953a
 }
 }
 
 
 // MARK: - objectType
 // MARK: - objectType
@@ -283,6 +279,8 @@ public  enum  objectType: String {
     case ot_click_chooseSearchMusic = "speedApp_clickButton_chooseSearchMusic" // 点击上报:选择音乐素材
     case ot_click_chooseSearchMusic = "speedApp_clickButton_chooseSearchMusic" // 点击上报:选择音乐素材
     case ot_view_publishSyncedUp = "speedApp_viewWindow_publishSyncedUp" // 曝光上报:窗口曝光
     case ot_view_publishSyncedUp = "speedApp_viewWindow_publishSyncedUp" // 曝光上报:窗口曝光
     case ot_click_shareWechat = "speedApp_clickButton_shareWechat" // 点击上报:分享微信
     case ot_click_shareWechat = "speedApp_clickButton_shareWechat" // 点击上报:分享微信
+    case ot_shareFriendBtn = "shareFriendButton" // 分享微信
+    case ot_shareMomentBtn = "shareMomentButton" // 分享朋友圈
     case ot_click_shareWechatMoment = "speedApp_clickButton_shareWechatMoment" // 点击上报:分享朋友圈
     case ot_click_shareWechatMoment = "speedApp_clickButton_shareWechatMoment" // 点击上报:分享朋友圈
     case ot_click_finished = "speedApp_clickButton_finished" // 点击上报:完成
     case ot_click_finished = "speedApp_clickButton_finished" // 点击上报:完成
     
     
@@ -546,6 +544,7 @@ public  enum  messageSubType: Int {
     case mtsub_pushIncStart = 508 // 通知-激励开始
     case mtsub_pushIncStart = 508 // 通知-激励开始
     case mtsub_pushIncEnd = 509 // 通知-激励结束
     case mtsub_pushIncEnd = 509 // 通知-激励结束
     case mtsub_pushIncRupt = 510 // 通知-激励中断
     case mtsub_pushIncRupt = 510 // 通知-激励中断
+    case mtsub_homeRecommend = 512 // 通知-激励中断
     case mtsub_shareSpace = 601 // 分享空间-分享
     case mtsub_shareSpace = 601 // 分享空间-分享
     case mtsub_shareSpLike = 602 // 分享空间-喜欢
     case mtsub_shareSpLike = 602 // 分享空间-喜欢
     case mtsub_shareSpComm = 603 // 分享空间-评论
     case mtsub_shareSpComm = 603 // 分享空间-评论

+ 15 - 15
Example/Podfile.lock

@@ -1,13 +1,13 @@
 PODS:
 PODS:
   - Alamofire (5.4.3)
   - Alamofire (5.4.3)
-  - BFCommonKit (1.4.4):
-    - BFCommonKit/BFBase (= 1.4.4)
-    - BFCommonKit/BFCategorys (= 1.4.4)
-    - BFCommonKit/BFConfig (= 1.4.4)
-    - BFCommonKit/BFDebug (= 1.4.4)
-    - BFCommonKit/BFEnums (= 1.4.4)
-    - BFCommonKit/BFUtility (= 1.4.4)
-  - BFCommonKit/BFBase (1.4.4):
+  - BFCommonKit (1.4.9):
+    - BFCommonKit/BFBase (= 1.4.9)
+    - BFCommonKit/BFCategorys (= 1.4.9)
+    - BFCommonKit/BFConfig (= 1.4.9)
+    - BFCommonKit/BFDebug (= 1.4.9)
+    - BFCommonKit/BFEnums (= 1.4.9)
+    - BFCommonKit/BFUtility (= 1.4.9)
+  - BFCommonKit/BFBase (1.4.9):
     - Alamofire (= 5.4.3)
     - Alamofire (= 5.4.3)
     - BFCommonKit/BFCategorys
     - BFCommonKit/BFCategorys
     - BFCommonKit/BFConfig
     - BFCommonKit/BFConfig
@@ -15,13 +15,13 @@ PODS:
     - FDFullscreenPopGesture (= 1.1)
     - FDFullscreenPopGesture (= 1.1)
     - RealmSwift (= 10.7.6)
     - RealmSwift (= 10.7.6)
     - SnapKit (= 5.0.1)
     - SnapKit (= 5.0.1)
-  - BFCommonKit/BFCategorys (1.4.4):
+  - BFCommonKit/BFCategorys (1.4.9):
     - KingfisherWebP (= 1.3.0)
     - KingfisherWebP (= 1.3.0)
-  - BFCommonKit/BFConfig (1.4.4)
-  - BFCommonKit/BFDebug (1.4.4):
+  - BFCommonKit/BFConfig (1.4.9)
+  - BFCommonKit/BFDebug (1.4.9):
     - BFCommonKit/BFCategorys
     - BFCommonKit/BFCategorys
-  - BFCommonKit/BFEnums (1.4.4)
-  - BFCommonKit/BFUtility (1.4.4):
+  - BFCommonKit/BFEnums (1.4.9)
+  - BFCommonKit/BFUtility (1.4.9):
     - Alamofire (= 5.4.3)
     - Alamofire (= 5.4.3)
     - BFCommonKit/BFCategorys
     - BFCommonKit/BFCategorys
     - BFCommonKit/BFConfig
     - BFCommonKit/BFConfig
@@ -74,7 +74,7 @@ EXTERNAL SOURCES:
 
 
 SPEC CHECKSUMS:
 SPEC CHECKSUMS:
   Alamofire: e447a2774a40c996748296fa2c55112fdbbc42f9
   Alamofire: e447a2774a40c996748296fa2c55112fdbbc42f9
-  BFCommonKit: 9fd8de73084c196dbd61397ada86c4545fa2c184
+  BFCommonKit: 61380c2c5d74333d4a60fe52a3321c937b2a1f06
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51
   KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51
   Kingfisher: 6c3df386db71d82c0817a429d2c9421a77396529
   Kingfisher: 6c3df386db71d82c0817a429d2c9421a77396529
@@ -87,4 +87,4 @@ SPEC CHECKSUMS:
 
 
 PODFILE CHECKSUM: 5c138dc5d174c9336dd4473cb26265c7619334aa
 PODFILE CHECKSUM: 5c138dc5d174c9336dd4473cb26265c7619334aa
 
 
-COCOAPODS: 1.11.2
+COCOAPODS: 1.10.2