Mobil Programlama

iOS

Web Kaynaklarından Resim İndirmek için SDWebImage

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Uzaktaki bir kaynaktan resim dosyaları getirmek için asenkron bağlantı metodlarını kullanmamız gerektiğini önceki bölümlerde açıklamıştık. Bunun sebebi ise senkron açılan bağlantıların ana program akışı (main thread) üzerinde çalışması ve kullanıcı arayüzünü (UI) kitleyerek programa donmuş ve bozuk hissi vermesiydi. Mobil uygulamalar da kullanıcıyı sürekli olarak bilgilendirmek ve akıcılığı sağlamak zorunda olduğundan uzun süreli işlemler ve İnternet bağlantıları sürekli olarak arka planda gerçekleştirilmek zorundadır.

SDWebImage adlı proje ise UIImageView sınıfına ek özellikler katarak uzaktaki bir sunucudan indirilmesi gereken resimleri herhangi ek bir kod yazamadan UIImageView içerisinden ek metodlar yardımıyla indirmemizi sağlıyor. Aynı zamanda oluşturulan bağlantılar tamamen asenkron çalıştığından kullanıcı, herhangi bir kilitlenme ya da bekleme yaşamak zorunda kalmıyor. Son olarak da sunduğu cache özelliğiyle önceden indirilmiş resimlerin cihaz belleğinden getirilmesi aynı resim için tekrar tekrar bağlantı açılmasını engelliyor.

SDWebImage'ı projenize eklemek için yapmanız gereken dosyaları proje klasörüne taşımak ve Add Files To seçeneği ile projeye tanıtmak olacaktır. Bir diğer yöntem olarak, buradaki GitHub deposundan indirip, projeye harici bir geliştirme çatısı (framework) gibi tanıtabilirsiniz. Son olarak projenin çalışması için ImageIO Framework'e ihtiyaç duyulmaktadır. Bunu da proje seçenekleri altında Targets içinden Linked Frameworks and Libraries menüsüne ekleyerek gerçekleştirebilirsiniz.

ImageIO framework eklenmesi

Bu işlemleri gerçekleştirdikten sonra projenizin içerisinde asenkron çağrı ile resim yüklemesi yapacağınız dosyalarda aşağıdaki import işlemini gerçekleştirerek SDWebImage kütüphanesini kullanabilirsiniz.

 

#import ;

 

Bu sayede artık UIImageView bazı ek metodlara sahip olacaktır. Uzaktaki bir sunucuda yer alan bir resmi UIImageView içerisinde yüklemek istediğinizde aşağıdaki metodu çağırabilirsiniz.

 

- (void) loadImage:(NSString *) imageUrl {
[newsImageView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
}

 

Yukarıdaki metodda NSString tipinde verilen bir web sitesi NSURL içerisinde yer alan URLWithString metodu ile bir NSURL objesine dönüştürülüyor. Bu noktada SDWebImage asenkron bir web isteği gerçekleştirip istenen resmi indirecek ve UIImageView içerisine yerleştirecektir. Eğer indirme işlemi sırasında kullanıcıya başka bir resim göstermek isterseniz bu resmi UIImage tipinde placeholderImage: ile belirtebilirsiniz. Bu resim UIImageView ilk ekrana geldiğinde gösterilir ve uzak kaynaktaki resim indirildiğinde gerçek resimle değiştirilir.

 

Projenin adresi: https://github.com/rs/SDWebImage