2012-11-27 4 views
1

Je construis une application iOS en utilisant Rubymotion. Je crée une ligne personnalisée tableview et je veux ajouter une grande image à partir d'une API distante (obtenir l'URL de l'objet JSON).Créer une image depuis une URL distante et l'ajouter à une cellule

Comment est-ce que je peux faire ceci? Je ne trouve nulle part comment créer une image à partir d'une URL distante, puis l'ajouter à la cellule.

Reconnaissant pour toute aide!

Mise à jour

J'utilise ce code maintenant, mais la performance est très mauvaise lors du défilement de la table.

url = NSURL.URLWithString("http://www.gravatar.com/avatar/1d92e61d7066383b1e3c797ea635f86e?s=128&d=identicon&r=PG") 
    data = NSData.dataWithContentsOfURL(url) 
    remote = UIImage.imageWithData(data) 
    image = UIImageView.alloc.initWithFrame([[50, 50],[150, 50]]) 
    image.contentMode = UIViewContentModeScaleAspectFit 
    image.image = remote 

Mise à jour 2

J'ai fini avec ce code qui vont de bonnes performances. Maintenant, j'ai juste besoin de comprendre comment mettre en cache les images.

Dispatch::Queue.concurrent.async do 
     data = NSData.alloc.initWithContentsOfURL(NSURL.URLWithString(post.image_medium)) 
     if data 
     image = UIImage.alloc.initWithData(data) 
     Dispatch::Queue.main.sync do 
      image_view = UIImageView.alloc.initWithFrame([[210, 10],[80, 80]]) 
      image_view.image = image 
      view.addSubview(image_view) 
     end 
     end 
    end 

Répondre

1

Si c'est juste une image dans une utilisation de cellules

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com/exampleImage.png"]]; 
yourCell.image = [UIImage imageWithData:data]; 

Si vous avez beaucoup d'alors ou ne veulent pas bloquer l'utilisation de l'interface utilisateur AsyncImageView

+0

Merci! Mais comment puis-je faire cela dans Ruby? –

+0

Désolé, je l'ai lu rapidement et je n'ai pas remarqué que vous utilisez rubymotion. Je pensais que vous utilisiez ruby ​​sur le serveur. Je ne connais pas la syntaxe de rubymotion, mais la première partie devrait être similaire au code que j'ai posté. J'ai regardé le doc de rubymotion et vous avez le NSURL, NSData UIImage et UITableViewCell. Les étapes sont les mêmes. – jcesarmobile

+0

J'ai essayé et j'ai réussi à convertir votre code en Ruby (voir mise à jour) mais la performance est très mauvaise quand je défile. –

Questions connexes