iOS에서 애니메이션 GIF 표시


90

iMessage를 사용하면 이제 애니메이션 GIF를 보내고 표시 할 수 있습니다. 이것은 Apple이 이제 응용 프로그램에서 애니메이션 GIF 표시를 지원하고 있음을 의미합니까? 아니면 이미지를 프레임으로 분할 한 다음 순차적으로 표시하는 가장 쉬운 방법입니까? iOS 5.1에서 애니메이션 GIF를 표시하는 가장 쉬운 방법은 무엇입니까?

감사!

답변:


140

iOS7을 대상으로하고 이미 이미지가 프레임으로 분할 된 경우 animatedImageNamed:duration:.

스피너를 애니메이션한다고 가정 해 보겠습니다. 모든 프레임을 프로젝트에 복사하고 다음과 같이 이름을 지정합니다.

  • spinner-1.png
  • spinner-2.png
  • spinner-3.png
  • ,

그런 다음 다음을 통해 이미지를 만듭니다.

[UIImage animatedImageNamed:@"spinner-" duration:1.0f];

문서에서 :

이 메소드는 name 매개 변수에 제공된 기본 파일 이름에 일련의 숫자를 추가하여 일련의 파일을로드합니다. 예를 들어, name 매개 변수의 내용이 'image'인 경우이 메서드는 이름이 'image0', 'image1'인 파일에서 'image1024'까지 이미지를로드하려고 시도합니다. 애니메이션 이미지에 포함 된 모든 이미지는 동일한 크기와 배율을 공유해야합니다.


5
프레임에 애니메이션이없는 경우 미리보기 앱에서 GIF를 열고 프레임을 드래그하면됩니다. 프레임은 .tiff로 추출되어야하므로 여기를 참조하십시오 : maclife.com/article/howtos/…
앙드레 파 텔리


38

FLAnimatedImage 는 iOS 용 고성능 오픈 소스 애니메이션 GIF 엔진입니다.

  • 데스크톱 브라우저에 필적하는 재생 속도로 여러 GIF를 동시에 재생합니다.
  • 가변 프레임 지연을 고려합니다.
  • 메모리 부족시 정상적으로 작동합니다.
  • 첫 번째 재생 루프 동안 지연 또는 차단 제거
  • 최신 브라우저와 동일한 방식으로 빠른 GIF의 프레임 지연을 해석합니다.

Flipboard의 모든 GIF구동 하기 위해 작성한 잘 테스트 된 구성 요소입니다 .


현재 프레임 속성이이 프레임 워크에서 잘못된 값을 반환합니다! github.com/Flipboard/FLAnimatedImage/issues/222
Mo Farhand

12

또 다른 대안은를 사용 UIWebView하여 애니메이션 GIF를 표시하는 것입니다. GIF를 서버에서 가져 오면 가져 오기가 처리됩니다. 로컬 GIF에서도 작동합니다.


감사. 이것은 잘 작동합니다. 그러나 gif가 webview에 처음로드 될 때 약간의 지연이 발생하여 애니메이션의 '슬로우 모션'이 발생할 수 있습니다. 더 부드러워 야하는 경우이 질문에 대한 답변에서 공유 된 애니메이션 프레임이 더 좋을 수 있습니다.
Hammer

2
"iOS 8.0 및 OS X 10.10부터는 WKWebView를 사용하여 앱에 웹 콘텐츠를 추가하십시오. UIWebView 또는 WebView를 사용하지 마십시오." developer.apple.com/reference/webkit/wkwebview
Jason Moore

1
WebKit을 사용하여 GIF를 표시하는 것은 식료품을 집으로 운반하기 위해 화물선을 사는 것과 같습니다. 웹 뷰는 매우 비싸고 전체 JavaScript 및 렌더링 엔진의 초기화가 필요합니다. 이미지보기 솔루션을 사용하는 것이 좋습니다
Sirens

8

에서 아이폰 OS (11) 사진 프레임 워크는 애니메이션 GIF의 재생을 추가 할 수 있습니다.

샘플 앱은 여기에서 다운로드 할 수 있습니다 .

애니메이션 GIF 재생에 대한 추가 정보 (13 분 35 초부터) : https://developer.apple.com/videos/play/wwdc2017/505/

여기에 이미지 설명 입력


안녕하세요 @sash 샘플 앱에 "AnimatedImage"클래스가 없습니다. 가져 오는 다른 프레임 워크가 있습니까?
Shabarinath Pabba 2018

@ShabarinathPabba 샘플 앱이 업데이트 된 것 같습니다 :(
sash

7
#import <QuickLook/QuickLook.h>
#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    QLPreviewController *preview = [[QLPreviewController alloc] init];
    preview.dataSource = self;

    [self addChildViewController:preview];
    [self.view addSubview:preview.view];
}

#pragma mark - QLPreviewControllerDataSource

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    return 1;
}

- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx
{
    NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myanimated.gif" ofType:nil]];
    return fileURL;
}

@end

메모리 사용량이
적고

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.