From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/YYCategories/YYCategories/UIKit/UIImage+YYAdd.h | 377 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 377 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/YYCategories/YYCategories/UIKit/UIImage+YYAdd.h b/screendisplay/Pods/YYCategories/YYCategories/UIKit/UIImage+YYAdd.h new file mode 100755 index 0000000..f4b443f --- /dev/null +++ b/screendisplay/Pods/YYCategories/YYCategories/UIKit/UIImage+YYAdd.h @@ -0,0 +1,377 @@ +// +// UIImage+YYAdd.h +// YYCategories <https://github.com/ibireme/YYCategories> +// +// Created by ibireme on 13/4/4. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +/** + Provide some commen method for `UIImage`. + Image process is based on CoreGraphic and vImage. + */ +@interface UIImage (YYAdd) + +#pragma mark - Create image +///============================================================================= +/// @name Create image +///============================================================================= + +/** + Create an animated image with GIF data. After created, you can access + the images via property '.images'. If the data is not animated gif, this + function is same as [UIImage imageWithData:data scale:scale]; + + @discussion It has a better display performance, but costs more memory + (width * height * frames Bytes). It only suited to display small + gif such as animated emoji. If you want to display large gif, + see `YYImage`. + + @param data GIF data. + + @param scale The scale factor + + @return A new image created from GIF, or nil when an error occurs. + */ ++ (nullable UIImage *)imageWithSmallGIFData:(NSData *)data scale:(CGFloat)scale; + +/** + Whether the data is animated GIF. + + @param data Image data + + @return Returns YES only if the data is gif and contains more than one frame, + otherwise returns NO. + */ ++ (BOOL)isAnimatedGIFData:(NSData *)data; + +/** + Whether the file in the specified path is GIF. + + @param path An absolute file path. + + @return Returns YES if the file is gif, otherwise returns NO. + */ ++ (BOOL)isAnimatedGIFFile:(NSString *)path; + +/** + Create an image from a PDF file data or path. + + @discussion If the PDF has multiple page, is just return's the first page's + content. Image's scale is equal to current screen's scale, size is same as + PDF's origin size. + + @param dataOrPath PDF data in `NSData`, or PDF file path in `NSString`. + + @return A new image create from PDF, or nil when an error occurs. + */ ++ (nullable UIImage *)imageWithPDF:(id)dataOrPath; + +/** + Create an image from a PDF file data or path. + + @discussion If the PDF has multiple page, is just return's the first page's + content. Image's scale is equal to current screen's scale. + + @param dataOrPath PDF data in `NSData`, or PDF file path in `NSString`. + + @param size The new image's size, PDF's content will be stretched as needed. + + @return A new image create from PDF, or nil when an error occurs. + */ ++ (nullable UIImage *)imageWithPDF:(id)dataOrPath size:(CGSize)size; + +/** + Create a square image from apple emoji. + + @discussion It creates a square image from apple emoji, image's scale is equal + to current screen's scale. The original emoji image in `AppleColorEmoji` font + is in size 160*160 px. + + @param emoji single emoji, such as @"����". + + @param size image's size. + + @return Image from emoji, or nil when an error occurs. + */ ++ (nullable UIImage *)imageWithEmoji:(NSString *)emoji size:(CGFloat)size; + +/** + Create and return a 1x1 point size image with the given color. + + @param color The color. + */ ++ (nullable UIImage *)imageWithColor:(UIColor *)color; + +/** + Create and return a pure color image with the given color and size. + + @param color The color. + @param size New image's type. + */ ++ (nullable UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size; + +/** + Create and return an image with custom draw code. + + @param size The image size. + @param drawBlock The draw block. + + @return The new image. + */ ++ (nullable UIImage *)imageWithSize:(CGSize)size drawBlock:(void (^)(CGContextRef context))drawBlock; + +#pragma mark - Image Info +///============================================================================= +/// @name Image Info +///============================================================================= + +/** + Whether this image has alpha channel. + */ +- (BOOL)hasAlphaChannel; + + +#pragma mark - Modify Image +///============================================================================= +/// @name Modify Image +///============================================================================= + +/** + Draws the entire image in the specified rectangle, content changed with + the contentMode. + + @discussion This method draws the entire image in the current graphics context, + respecting the image's orientation setting. In the default coordinate system, + images are situated down and to the right of the origin of the specified + rectangle. This method respects any transforms applied to the current graphics + context, however. + + @param rect The rectangle in which to draw the image. + + @param contentMode Draw content mode + + @param clips A Boolean value that determines whether content are confined to the rect. + */ +- (void)drawInRect:(CGRect)rect withContentMode:(UIViewContentMode)contentMode clipsToBounds:(BOOL)clips; + +/** + Returns a new image which is scaled from this image. + The image will be stretched as needed. + + @param size The new size to be scaled, values should be positive. + + @return The new image with the given size. + */ +- (nullable UIImage *)imageByResizeToSize:(CGSize)size; + +/** + Returns a new image which is scaled from this image. + The image content will be changed with thencontentMode. + + @param size The new size to be scaled, values should be positive. + + @param contentMode The content mode for image content. + + @return The new image with the given size. + */ +- (nullable UIImage *)imageByResizeToSize:(CGSize)size contentMode:(UIViewContentMode)contentMode; + +/** + Returns a new image which is cropped from this image. + + @param rect Image's inner rect. + + @return The new image, or nil if an error occurs. + */ +- (nullable UIImage *)imageByCropToRect:(CGRect)rect; + +/** + Returns a new image which is edge inset from this image. + + @param insets Inset (positive) for each of the edges, values can be negative to 'outset'. + + @param color Extend edge's fill color, nil means clear color. + + @return The new image, or nil if an error occurs. + */ +- (nullable UIImage *)imageByInsetEdge:(UIEdgeInsets)insets withColor:(nullable UIColor *)color; + +/** + Rounds a new image with a given corner size. + + @param radius The radius of each corner oval. Values larger than half the + rectangle's width or height are clamped appropriately to half + the width or height. + */ +- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius; + +/** + Rounds a new image with a given corner size. + + @param radius The radius of each corner oval. Values larger than half the + rectangle's width or height are clamped appropriately to + half the width or height. + + @param borderWidth The inset border line width. Values larger than half the rectangle's + width or height are clamped appropriately to half the width + or height. + + @param borderColor The border stroke color. nil means clear color. + */ +- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius + borderWidth:(CGFloat)borderWidth + borderColor:(nullable UIColor *)borderColor; + +/** + Rounds a new image with a given corner size. + + @param radius The radius of each corner oval. Values larger than half the + rectangle's width or height are clamped appropriately to + half the width or height. + + @param corners A bitmask value that identifies the corners that you want + rounded. You can use this parameter to round only a subset + of the corners of the rectangle. + + @param borderWidth The inset border line width. Values larger than half the rectangle's + width or height are clamped appropriately to half the width + or height. + + @param borderColor The border stroke color. nil means clear color. + + @param borderLineJoin The border line join. + */ +- (nullable UIImage *)imageByRoundCornerRadius:(CGFloat)radius + corners:(UIRectCorner)corners + borderWidth:(CGFloat)borderWidth + borderColor:(nullable UIColor *)borderColor + borderLineJoin:(CGLineJoin)borderLineJoin; + +/** + Returns a new rotated image (relative to the center). + + @param radians Rotated radians in counterclockwise.��� + + @param fitSize YES: new image's size is extend to fit all content. + NO: image's size will not change, content may be clipped. + */ +- (nullable UIImage *)imageByRotate:(CGFloat)radians fitSize:(BOOL)fitSize; + +/** + Returns a new image rotated counterclockwise by a quarter���turn (90��). ��� + The width and height will be exchanged. + */ +- (nullable UIImage *)imageByRotateLeft90; + +/** + Returns a new image rotated clockwise by a quarter���turn (90��). ��� + The width and height will be exchanged. + */ +- (nullable UIImage *)imageByRotateRight90; + +/** + Returns a new image rotated 180�� . ��� + */ +- (nullable UIImage *)imageByRotate180; + +/** + Returns a vertically flipped image. ��� + */ +- (nullable UIImage *)imageByFlipVertical; + +/** + Returns a horizontally flipped image. ��� + */ +- (nullable UIImage *)imageByFlipHorizontal; + + +#pragma mark - Image Effect +///============================================================================= +/// @name Image Effect +///============================================================================= + +/** + Tint the image in alpha channel with the given color. + + @param color The color. + */ +- (nullable UIImage *)imageByTintColor:(UIColor *)color; + +/** + Returns a grayscaled image. + */ +- (nullable UIImage *)imageByGrayscale; + +/** + Applies a blur effect to this image. Suitable for blur any content. + */ +- (nullable UIImage *)imageByBlurSoft; + +/** + Applies a blur effect to this image. Suitable for blur any content except pure white. + (same as iOS Control Panel) + */ +- (nullable UIImage *)imageByBlurLight; + +/** + Applies a blur effect to this image. Suitable for displaying black text. + (same as iOS Navigation Bar White) + */ +- (nullable UIImage *)imageByBlurExtraLight; + +/** + Applies a blur effect to this image. Suitable for displaying white text. + (same as iOS Notification Center) + */ +- (nullable UIImage *)imageByBlurDark; + +/** + Applies a blur and tint color to this image. + + @param tintColor The tint color. + */ +- (nullable UIImage *)imageByBlurWithTint:(UIColor *)tintColor; + +/** + Applies a blur, tint color, and saturation adjustment to this image, + optionally within the area specified by @a maskImage. + + @param blurRadius The radius of the blur in points, 0 means no blur effect. + + @param tintColor An optional UIColor object that is uniformly blended with + the result of the blur and saturation operations. The + alpha channel of this color determines how strong the + tint is. nil means no tint. + + @param tintBlendMode The @a tintColor blend mode. Default is kCGBlendModeNormal (0). + + @param saturation A value of 1.0 produces no change in the resulting image. + Values less than 1.0 will desaturation the resulting image + while values greater than 1.0 will have the opposite effect. + 0 means gray scale. + + @param maskImage If specified, @a inputImage is only modified in the area(s) + defined by this mask. This must be an image mask or it + must meet the requirements of the mask parameter of + CGContextClipToMask. + + @return image with effect, or nil if an error occurs (e.g. no + enough memory). + */ +- (nullable UIImage *)imageByBlurRadius:(CGFloat)blurRadius + tintColor:(nullable UIColor *)tintColor + tintMode:(CGBlendMode)tintBlendMode + saturation:(CGFloat)saturation + maskImage:(nullable UIImage *)maskImage; + +@end + +NS_ASSUME_NONNULL_END -- Gitblit v1.8.0