123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- //
- // 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 <sys/sysctl.h>
- @interface YYImageDisplayExample()<UIGestureRecognizerDelegate>
- @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
|