// // YYImageDisplayExample.m // YYKitExample // // Created by ibireme on 15/8/9. // Copyright (c) 2015 ibireme. All rights reserved. // #import "YYImageDisplayExample.h" #import "YYImage.h" #import "UIView+YYAdd.h" #import "YYImageExampleHelper.h" #import @interface YYImageDisplayExample() @end @implementation YYImageDisplayExample { UIScrollView *_scrollView; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor colorWithWhite:0.863 alpha:1.000]; _scrollView = [UIScrollView new]; _scrollView.frame = self.view.bounds; [self.view addSubview:_scrollView]; UILabel *label = [UILabel new]; label.backgroundColor = [UIColor clearColor]; label.size = CGSizeMake(self.view.width, 60); label.top = 20; label.textAlignment = NSTextAlignmentCenter; label.numberOfLines = 0; label.text = @"Tap the image to pause/play\n Slide on the image to forward/rewind"; if ([self isSimulator]) { label.text = [@"Please run this app in device\nto get better performance.\n\n" stringByAppendingString:label.text]; label.height = 120; } [_scrollView addSubview:label]; [self addImageWithName:@"niconiconi" text:@"Animated GIF"]; [self addImageWithName:@"wall-e" text:@"Animated WebP"]; [self addImageWithName:@"pia" text:@"Animated PNG (APNG)"]; [self addFrameImageWithText:@"Frame Animation"]; [self addSpriteSheetImageWithText:@"Sprite Sheet Animation"]; _scrollView.panGestureRecognizer.cancelsTouchesInView = YES; } - (void)addImageWithName:(NSString *)name text:(NSString *)text { YYImage *image = [YYImage imageNamed:name]; [self addImage:image size:CGSizeZero text:text]; } - (void)addFrameImageWithText:(NSString *)text { NSString *basePath = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"EmoticonWeibo.bundle/com.sina.default"]; NSMutableArray *paths = [NSMutableArray new]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_aini@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_baibai@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_chanzui@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_chijing@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_dahaqi@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_guzhang@3x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_haha@2x.png"]]; [paths addObject:[basePath stringByAppendingPathComponent:@"d_haixiu@3x.png"]]; UIImage *image = [[YYFrameImage alloc] initWithImagePaths:paths oneFrameDuration:0.1 loopCount:0]; [self addImage:image size:CGSizeZero text:text]; } - (void)addSpriteSheetImageWithText:(NSString *)text { NSString *path = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"ResourceTwitter.bundle/fav02l-sheet@2x.png"]; UIImage *sheet = [[UIImage alloc] initWithData:[NSData dataWithContentsOfFile:path] scale:2]; NSMutableArray *contentRects = [NSMutableArray new]; NSMutableArray *durations = [NSMutableArray new]; // 8 * 12 sprites in a single sheet image CGSize size = CGSizeMake(sheet.size.width / 8, sheet.size.height / 12); for (int j = 0; j < 12; j++) { for (int i = 0; i < 8; i++) { CGRect rect; rect.size = size; rect.origin.x = sheet.size.width / 8 * i; rect.origin.y = sheet.size.height / 12 * j; [contentRects addObject:[NSValue valueWithCGRect:rect]]; [durations addObject:@(1 / 60.0)]; } } YYSpriteSheetImage *sprite; sprite = [[YYSpriteSheetImage alloc] initWithSpriteSheetImage:sheet contentRects:contentRects frameDurations:durations loopCount:0]; [self addImage:sprite size:size text:text]; } - (void)addImage:(UIImage *)image size:(CGSize)size text:(NSString *)text { YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image]; if (size.width > 0 && size.height > 0) imageView.size = size; imageView.centerX = self.view.width / 2; imageView.top = [(UIView *)[_scrollView.subviews lastObject] bottom] + 30; [_scrollView addSubview:imageView]; [YYImageExampleHelper addTapControlToAnimatedImageView:imageView]; [YYImageExampleHelper addPanControlToAnimatedImageView:imageView]; for (UIGestureRecognizer *g in imageView.gestureRecognizers) { g.delegate = self; } UILabel *imageLabel = [UILabel new]; imageLabel.backgroundColor = [UIColor clearColor]; imageLabel.frame = CGRectMake(0, 0, self.view.width, 20); imageLabel.top = imageView.bottom + 10; imageLabel.textAlignment = NSTextAlignmentCenter; imageLabel.text = text; [_scrollView addSubview:imageLabel]; _scrollView.contentSize = CGSizeMake(self.view.width, imageLabel.bottom + 20); } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES; } - (BOOL)isSimulator { size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *model = [NSString stringWithUTF8String:machine]; free(machine); return [model isEqualToString:@"x86_64"] || [model isEqualToString:@"i386"]; } @end