Tampilkan GIF animasi di iOS


91

Saya perhatikan bahwa dengan iMessage, gif animasi sekarang dapat dikirim dan ditampilkan. Apakah ini berarti Apple sekarang mendukung tampilan GIF animasi dalam sebuah aplikasi, atau apakah metode termudah masih membagi gambar dalam bingkai dan kemudian menampilkannya secara berurutan? Apa cara termudah untuk menampilkan GIF animasi pada iOS 5.1?

Terima kasih!

Jawaban:


140

Jika Anda menargetkan iOS7 dan sudah membagi gambar menjadi beberapa bingkai, Anda dapat menggunakan animatedImageNamed:duration:.

Misalkan Anda menganimasikan pemintal. Salin semua bingkai Anda ke dalam proyek dan beri nama sebagai berikut:

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

Kemudian buat gambar melalui:

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

Dari dokumen :

Metode ini memuat serangkaian file dengan menambahkan serangkaian angka ke nama file dasar yang diberikan dalam parameter name. Misalnya, jika parameter nama memiliki 'gambar' sebagai isinya, metode ini akan mencoba memuat gambar dari file dengan nama 'gambar0', 'gambar1' dan seterusnya hingga 'gambar1024'. Semua gambar yang disertakan dalam gambar animasi harus memiliki ukuran dan skala yang sama.


5
Dan jika Anda tidak memiliki animasi dalam bingkai, Anda dapat membuka GIF di aplikasi Pratinjau dan menarik bingkai keluar. Bingkai harus diekstraksi sebagai .tiff, jadi lihat di sini: maclife.com/article/howtos/…
André Fratelli


38

FLAnimatedImage adalah mesin GIF animasi open source yang berkinerja baik untuk iOS:

  • Memutar beberapa GIF secara bersamaan dengan kecepatan pemutaran yang sebanding dengan browser desktop
  • Menghormati penundaan bingkai variabel
  • Berperilaku anggun di bawah tekanan memori
  • Menghilangkan penundaan atau pemblokiran selama loop pemutaran pertama
  • Menafsirkan penundaan bingkai GIF cepat seperti yang dilakukan browser modern

Ini adalah komponen yang telah teruji dengan baik yang saya tulis untuk memberi daya pada semua GIF di Flipboard .


properti frame saat ini mengembalikan salah dari kerangka ini! github.com/Flipboard/FLAnimatedImage/issues/222
Mo Farhand

12

Alternatif lain adalah menggunakan a UIWebViewuntuk menampilkan GIF animasi. Jika GIF akan diambil dari server, maka ini menangani pengambilan. Ini juga berfungsi dengan GIF lokal.


Terima kasih. Ini bekerja dengan baik. Namun, mungkin ada sedikit keterlambatan saat gif pertama kali dimuat ke tampilan web yang menyebabkan 'gerakan lambat' pada animasi. jika Anda membutuhkannya agar lebih halus, bingkai animasi yang dibagikan dalam jawaban untuk pertanyaan ini mungkin lebih baik.
Palu

2
"Mulai iOS 8.0 dan OS X 10.10, gunakan WKWebView untuk menambahkan konten web ke aplikasi Anda. Jangan gunakan UIWebView atau WebView." developer.apple.com/reference/webkit/wkwebview
Jason Moore

1
Menggunakan WebKit untuk menampilkan GIF seperti membeli kapal kargo untuk mengangkut bahan makanan ke rumah Anda. Tampilan web sangat mahal dan membutuhkan inisialisasi JavaScript lengkap dan mesin rendering. Saya sangat merekomendasikan menggunakan solusi tampilan gambar
Sirene


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

Penggunaan memori rendah dan mudah digunakan, tetapi memainkan gif sangat lambat
Roman Truba

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.