Three20 : classes pour améliorer les classes standard iPhone

AliGatorAliGator Membre, Modérateur
juin 2010 modifié dans Actualités #1
http://joehewitt.com/post/the-three20-project/
- PhotoViewer
- MessageComposer
- Internet-aware TableView Controllers (pour les tables qui chargent leur contenu depuis le net et ont donc leur contenu asynchrone)
- ...

Réponses

  • NseaProtectorNseaProtector Membre
    17:11 modifié #2
    MERCI ! Bien trouvé, merci de partager.
  • AliGatorAliGator Membre, Modérateur
    17:11 modifié #3
    En fait j'en ai déjà  entendu parler par bouche-à -oreille, et je suis retombé dessus aujourd'hui donc j'ai fait le post pour l'avoir de côté :P
    Mais j'ai encore jamais eu l'occasion de les tester.
  • JegnuXJegnuX Membre
    17:11 modifié #4
    Yep j'ai découvert ça ce weekend, y'a des trucs pas mal.

    Bon par contre pour mon projet actuel je peux pas m'en servir car c'est pas compatible avec le SDK 3.2 à  cause du NDA, donc faudra attendre ^^
  • CeetixCeetix Membre
    17:11 modifié #5
    J'ai vu qu'avec ça on peut recréer une sorte de springboard pour son application. Est-ce dur à  mettre en place soit même?
    C'est une UIScrollView avec pageEnabled et une classe  qui hérite de UIButton non?
  • PierrePierre Membre
    17:11 modifié #6
    Merci AliGator pour l'information.

    Le lien que tu donne renvoie une erreur 500, pour ceux que ça intéresse vous pouvez trouver le code sur Github : http://github.com/facebook/three20

    C'est une des librairies utilisée par Facebook pour réaliser son application pour iPhone.

    Pierre
  • lgriffielgriffie Membre
    17:11 modifié #7
    dans 1268826199:

    J'ai vu qu'avec ça on peut recréer une sorte de springboard pour son application. Est-ce dur à  mettre en place soit même?
    C'est une UIScrollView avec pageEnabled et une classe  qui hérite de UIButton non?


    Pour mon application j'ai mis en place ce système de Dashboard mais à  l'époque je ne connaissais pas le framework utilisé par Facebook. En fait rien de compliqué sur tu ne mets pas en place le fait de pouvoir changer les icônes de place comme le propose l'iPhone. Moi je suis simplement passé par des boutons ajoutés dans un scrollview. C'est en effet comme ça que je l'ai fait. Mais il y a peut-être mieux.

    Une copie d'écran disponible ici : http://fr.task-this.com/
  • AliGatorAliGator Membre, Modérateur
    17:11 modifié #8
    Je réveille ce vieux sujet parce qu'aujourd'hui j'ai un projet pour lequel Three20 me semblerait bien utile (Drag-Refresh tableViews, tableViews avec UIImageView qui chargent leur image depuis le réseau, ...)

    Seulement voilà , je m'y perd complètement !
    La doc se limite apparemment à  :
    - quelques articles éparses et très loin de couvrir tous les domaines (c'est un pléonasme)...
    - et à  l'API (http://api.three20.info/index.html)... qui ne fait que lister les classes existantes et leurs méthodes... mais sans bcp plus d'explications que si on allait voir le .h je trouve.

    Au final, pour avoir une TableView qui a le comportement où on peut tirer puis relâcher pour rafraà®chir, bah faut savoir que la classe à  utiliser s'appelle TTTableViewDragRefreshDelegate (en plus c'est une classe, pas un @protocol, et pourtant elle s'appelle xxxDelegate...), si on sait pas qu'elle existe cette classe bah on va pas beaucoup plus loin...

    Et ensuite on essaye de l'utiliser... et ça compile (enfin après pas mal de manipulations pour supprimer les warnings de partout)... et ça plante... parceque mon datasource ne répond pas à  la classe "model"...
    Bref j'ai essayé de me baser un peu sur les exemples, mais dès qu'on essaye de modifier un peu un truc, c'est vite le gros bor... bazar :(

    J'ai l'impression que je suis obligé de créer un UIViewController, un TTTableViewController, un TTTableViewDragRefreshDelegate, un TTTableViewDataSource et un TTModel... rien que pour afficher ma table !  mon TTTableViewController ne peux pas jouer le role de DragRefreshDelegate car c'est un objet et pas un @protocol donc il faut un objet séparé, le datasource il lui faut un model séparé (je suis partisan du MVC, mais là  quand même...)...

    Moi qui ai déjà  un sacré paquet de classes pour chacun de mes écrans, là  ça me parait le grand boxon pour si peu. En fait j'ai l'impression qu'on est obligé déjà  de faire tout avec des classes TTxxx partout, donc qu'il faut tout "convertir"... et en plus qu'il faut 3x plus de classes pour faire ce qu'on veut...



    Bref s'il y a des retours d'expérience là  dessus, je suis prenneur parce que là , j'avais entendu parler de Three20 je pensais que ça me simplifierai la vie mais j'ai vraiment l'impression que c'est plutôt l'inverse !
  • LeChatNoirLeChatNoir Membre, Modérateur
    17:11 modifié #9
    ouaouh, moi qui pensait l'intégrer prochainement dans mon appli pour la partie "photo viewer" !
    Ca me donne pas envie là  !
    Et si on se faisait un "ThreeDev" ?
    ::)
  • AliGatorAliGator Membre, Modérateur
    juin 2010 modifié #10
    Bah j'avoue que je suis peut-être pessimiste, ou fatigué de mon WE et j'ai du coup p'tet du mal à  tout appréhender... mais j'ai l'impression en tout cas que si tu fais pas TOUT en Three20, avec toutes les classes qu'ils ont prévues, bah c'est vite galère.

    Après si tu fais un projet entièrement basé sur TT au niveau de l'UI et que tu suis les exemples donnés, ça doit être assez bien foutu je pense. Et pour les autres trucs que l'UI ça va, par exemple j'utilise les TTURLRequest pour envoyer une requête POST en multipart/formdata (pour envoyer des fichiers à  mon serveur) et ça marche plutôt bien. Mais bon c'était que de la couche métier, j'avais juste une classe TTURLRequest à  utiliser et basta.

    Là  c'est pour la couche "vue" et les "Internet-Aware Table Views" que je galère, et notre graphiste ayant imaginé une interface qui sort un peu des exemples fournis par Three20, bah dès qu'on s'écarte des exemples j'ai des soucis de partout. Pour les trucs genre springboard ou photoviewer c'est p'tet autre chose et moins galère, j'ai pas testé (mais la doc n'a pas l'air plus riche non plus)


    Donc après soit je ne maà®trise pas le framework, et c'est pour ça que je fais appel à  des REX si certains l'ont déjà  utilisé... soit on est obligé pour ce qui est de l'UI d'utiliser les TTmachin partout, et là  j'avoue...
  • aurelaurel Membre
    17:11 modifié #11
    Je l'ai testé vite fait et c'est clair qu'il faut mettre des TT dans tout les fichiers sinon ça ne fonctionne pas
  • 6ix6ix Membre
    17:11 modifié #12
    Je ressors un peu ce sujet, juste pour donner un avis de plus  ;)

    Il y a quelques temps je voulais créer une navigation d'images à  la façon de l'application Photos, c'est-à -dire défilement horizontal des images, et pour chaque image la possibilité de zoomer (pinch ou double-tap), ainsi que masquage des éléments d'interface au-dessus de l'image; chaque image est chargée depuis une URL distante.

    Avant de me lancer, j'avais fait qques recherches qui m'ont amené à  ce framework, et j'ai également vite eu l'impression d'être perdu ! Du coup je n'ai pas trop approfondi, mais j'avais l'impression qu'au lieu de pouvoir simplement bénéficier d'une ou l'autre classe bien foutues permettant d'offrir plus que les classes de base, on rajoutait une couche complète TTSomething sans que ce soit forcément très clair.

    Bref, j'avais laissé tombé l'idée et était arrivé moi-même à  un résultat correct. Mais pour ma part je suis plutôt partisan de qques classes bien ciblées pour une fonctionnalité précise.

    dans 1276457004:

    ouaouh, moi qui pensait l'intégrer prochainement dans mon appli pour la partie "photo viewer" !
    Ca me donne pas envie là  !
    Et si on se faisait un "ThreeDev" ?


    Si qqun est intéressé à  un PhotoViewer, je veux bien partager ce que j'ai fait pour arriver à  qqchose de vraiment bien.
  • CeetixCeetix Membre
    17:11 modifié #13
    Je ne pense pas que ça soit si dur que ça c'est "juste" une scrollView dans laquelle on met l'image, on active le pageEnabled et ensuite on détecte les tap. Je crois que depuis iOS 4 on peut détecter facilement le pinch. Moi ça m'intéresserai . Dans quelques jours j'essaierai je pense :)
  • KubernanKubernan Membre
    17:11 modifié #14
    dans 1280058148:

    Je ne pense pas que ça soit si dur que ça c'est "juste" une scrollView dans laquelle on met l'image, on active le pageEnabled et ensuite on détecte les tap. Je crois que depuis iOS 4 on peut détecter facilement le pinch. Moi ça m'intéresserai . Dans quelques jours j'essaierai je pense :)


    Bonjour,

    Il y a une vidéo de la wwwdc 2010 qui ne parle que de cela : Session 104 - Designing Apps with Scroll Views.

    K.
  • CeetixCeetix Membre
    17:11 modifié #15
    En effet, le mec au départ détaille très bien l'astuce et ensuite une femme code le système . Donc 6ix tu sais ce qu'il te reste à  faire :)
  • 6ix6ix Membre
    août 2010 modifié #16
    Tiens, je n'avais pas regardé cette vidéo, je vais y jeter un oeil !

    Pour le reste, le plus compliqué n'est pas le système général, mais plutôt de gérer les petits détails, comme le replacement après une rotation.

    [EDIT]
    J'ai eu le temps de regarder la vidéo de la session 104 de la WWDC, et voilà  mon avis:

    - j'ai enfin compris comment centrer correctement et facilement une image dans le processus !  :)
    - l'optimisation utilisant des CATiledLayer requiert apparemment un travail sur les images elle-mêmes (découpage); utile sur les ressources fournies par l'application elle-même, mais beaucoup moins lorsqu'elles sont chargée dynamiquement
    - leur application ne gère pas le changement d'orientation et se contente de charger des images du bundle

    Du coup j'ai bien envie de reprendre ce que j'avais fait en me basant sur leur travail. Je vous tiens au courant si je trouve le temps de m'y mettre (un peu limite ce mois-ci mais sait-on jamais...).

    Et j'arrête de polluer ce fil, désolé Ali  ;)
Connectez-vous ou Inscrivez-vous pour répondre.