From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/YYImage/YYImage/YYSpriteSheetImage.m | 80 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/YYImage/YYImage/YYSpriteSheetImage.m b/screendisplay/Pods/YYImage/YYImage/YYSpriteSheetImage.m new file mode 100755 index 0000000..f5a0d77 --- /dev/null +++ b/screendisplay/Pods/YYImage/YYImage/YYSpriteSheetImage.m @@ -0,0 +1,80 @@ +// +// YYSpriteImage.m +// YYImage <https://github.com/ibireme/YYImage> +// +// Created by ibireme on 15/4/21. +// 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 "YYSpriteSheetImage.h" + +@implementation YYSpriteSheetImage + +- (instancetype)initWithSpriteSheetImage:(UIImage *)image + contentRects:(NSArray *)contentRects + frameDurations:(NSArray *)frameDurations + loopCount:(NSUInteger)loopCount { + if (!image.CGImage) return nil; + if (contentRects.count < 1 || frameDurations.count < 1) return nil; + if (contentRects.count != frameDurations.count) return nil; + + self = [super initWithCGImage:image.CGImage scale:image.scale orientation:image.imageOrientation]; + if (!self) return nil; + + _contentRects = contentRects.copy; + _frameDurations = frameDurations.copy; + _loopCount = loopCount; + return self; +} + +- (CGRect)contentsRectForCALayerAtIndex:(NSUInteger)index { + CGRect layerRect = CGRectMake(0, 0, 1, 1); + if (index >= _contentRects.count) return layerRect; + + CGSize imageSize = self.size; + CGRect rect = [self animatedImageContentsRectAtIndex:index]; + if (imageSize.width > 0.01 && imageSize.height > 0.01) { + layerRect.origin.x = rect.origin.x / imageSize.width; + layerRect.origin.y = rect.origin.y / imageSize.height; + layerRect.size.width = rect.size.width / imageSize.width; + layerRect.size.height = rect.size.height / imageSize.height; + layerRect = CGRectIntersection(layerRect, CGRectMake(0, 0, 1, 1)); + if (CGRectIsNull(layerRect) || CGRectIsEmpty(layerRect)) { + layerRect = CGRectMake(0, 0, 1, 1); + } + } + return layerRect; +} + +#pragma mark @protocol YYAnimatedImage + +- (NSUInteger)animatedImageFrameCount { + return _contentRects.count; +} + +- (NSUInteger)animatedImageLoopCount { + return _loopCount; +} + +- (NSUInteger)animatedImageBytesPerFrame { + return 0; +} + +- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { + return self; +} + +- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { + if (index >= _frameDurations.count) return 0; + return ((NSNumber *)_frameDurations[index]).doubleValue; +} + +- (CGRect)animatedImageContentsRectAtIndex:(NSUInteger)index { + if (index >= _contentRects.count) return CGRectZero; + return ((NSValue *)_contentRects[index]).CGRectValue; +} + +@end -- Gitblit v1.8.0