NRGridView

13

Réponses

  • J'en profite du coup de la discussion, pour relancer le sujet par rapport à  mon soucis du backgroundView
  • muqaddarmuqaddar Administrateur
    juillet 2012 modifié #63
    'yass_1988' a écrit:


    J'en profite du coup de la discussion, pour relancer le sujet par rapport à  mon soucis du backgroundView




    Sans sous-classer:


    <br />
    <br />
      [color=#b9369d]if[/color] (cell == [color=#b9369d]nil[/color])<br />
      {<br />
    	cell = [[[[color=#4f8085]NRGridViewCell[/color] [color=#3f277d]alloc[/color]] [color=#34595d]initWithReuseIdentifier[/color]:MyCellIdentifier] [color=#3f277d]autorelease[/color]];<br />
    <br />
    [color=#784a32][color=#000000]	[/color][color=#b9369d]if[/color][color=#000000] [/color]USER_IPAD[color=#000000] [/color][/color]<br />
    	{<br />
    [color=#3f277d][color=#000000]	  cell.[/color][color=#4f8085]backgroundView[/color][color=#000000] = [[[[/color][color=#6f43a4]UIImageView[/color][color=#000000] [/color]alloc[color=#000000]] [/color]initWithImage[color=#000000]:[[/color][color=#6f43a4]UIImage[/color][color=#000000] [/color]imageNamed[color=#000000]:[/color][color=#d1342a]@&quot;bgcell-grid-704x640.png&quot;[/color][color=#000000]]] [/color]autorelease[color=#000000]]; [/color][/color]<br />
    [color=#3f277d][color=#000000]	  cell.[/color][color=#4f8085]selectionBackgroundView[/color][color=#000000] = [[[[/color][color=#6f43a4]UIImageView[/color][color=#000000] [/color]alloc[color=#000000]] [/color]initWithImage[color=#000000]:[[/color][color=#6f43a4]UIImage[/color][color=#000000] [/color]imageNamed[color=#000000]:[/color][color=#d1342a]@&quot;bgcell-grid-704x640-selected.png&quot;[/color][color=#000000]]] [/color]autorelease[color=#000000]];  [/color][/color]<br />
    	}<br />
    }<br />
    
  • muqaddarmuqaddar Administrateur
    juillet 2012 modifié #64
    'AliGator' a écrit:


    Dans UICollectionView de iOS6 c'est possible ^^ [just trolling]




    Héhé. Qu'il s'en inspire le jeune padawan.
  • santos44santos44 Membre
    juillet 2012 modifié #65
    Heeuuu,

    en faite son soucis n'étais pas d'avoir une image en fond d'écran de sa cellule, mais plutôt un fond d'écran derrière sa grille.
  • Merci de le souligner Santos.

    Mon soucis à  la base est que je souhaite avoir une image en arrière plan de ma grille, "backgroundView", du coup j'ai sous-classé NRGridView. Et dans mon viewController qui hérite de NRGridViewContreller et qui implémente NRGridViewDelegate, je vois pas a quel moment dire que l'objet avec lequel je construit et je travaille ma grille (self.gridView) de type NRGridView, que je veux du coup travailler exclusivement avec un objet de type SubNRGridView.
  • muqaddarmuqaddar Administrateur
    juillet 2012 modifié #67
    'yass_1988' a écrit:


    Merci de le souligner Santos.

    Mon soucis à  la base est que je souhaite avoir une image en arrière plan de ma grille, "backgroundView", du coup j'ai sous-classé NRGridView. Et dans mon viewController qui hérite de NRGridViewContreller et qui implémente NRGridViewDelegate, je vois pas a quel moment dire que l'objet avec lequel je construit et je travaille ma grille (self.gridView) de type NRGridView, que je veux du coup travailler exclusivement avec un objet de type SubNRGridView.




    Donc le fond de tes cellules est transparent ?



    Si tu mets une UIImageView sous ta NRGridView et ta NRGridView en clearColor, ça ne règle pas ton problème ?
  • J'avais déjà  répondu à  ton problème il me semble yass_1988..

    Sinon concernant le tiens, muqaddar, c'est à  toi de calculer sur quelle cellule la scrollView doit s'arrêter. Et en utilisant NRGridViewScrollPositionAtMiddle ça devrait faire son affaire. Le seul travail que tu as à  faire c'est de calculer ça en fonction de la décélération.



    Si il y a la moindre feature-request à  faire, merci d'utiliser github image/smile.png' class='bbc_emoticon' alt=':)' />
  • muqaddarmuqaddar Administrateur
    'ldesroziers' a écrit:


    Et en utilisant NRGridViewScrollPositionAtMiddle ça devrait faire son affaire. Le seul travail que tu as à  faire c'est de calculer ça en fonction de la décélération.




    OK, merci.

    Je vais essayer de me dépatouiller avec les methodes delegate de scrollview.
  • muqaddarmuqaddar Administrateur
    Dis-moi Louka j'ai un bug étrange sur iPhone depuis cet après-midi.



    En mode horizontal, rien ne s'affiche dans la grille.

    En mode vertical, mes cellules s'affichent.



    En débuguant, je m'aperçois que seule:




    - (NSInteger)gridView:(NRGridView *)gridView numberOfItemsInSection:(NSInteger)section
    




    est appelée en mode horizontal, mais pas:




    - (NRGridViewCell*)gridView:(NRGridView *)aGridView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    




    Pourtant, la première renvoie bien un nombre supérieur à  zéro pour les cellules.



    Je suis dans un UIViewController avec un outlet vers NRGridView, sous-classe de UIScrollView.



    Quelle est la meilleure méthode pour placer :




    self.flowView.layoutStyle = NRGridViewLayoutStyleHorizontal;
    




    ou même
    <br />
      self.flowView.delegate = self;<br />
      self.flowView.dataSource = self; <br />
    




    Au départ, c'était dans viewDidLoad, puis j'ai essayé dans loadView... même problème.



    De toute évidence, il y a quelque chose qui doit différer au niveau de l'initialization entre les 2 sens ?



    L'autre problème c'est que... je n'ai pas le bug sur l'iPad. image/sad.png' class='bbc_emoticon' alt=':(' />

    La seule différence, c'est que le ViewController est pushé sur l'iPhone et pas sur l'iPad.



    Bref, tout ça me laisse perplexe.
  • muqaddarmuqaddar Administrateur
    Problème réglé...



    Visiblement en mettant une image plus grande dans la backgroundView de la cellule que la cellule elle-même, ça mettait le boxon (et ça n'affichait rien au lieu d'afficher des cellules aux backgrounds qui se montent dessus).
  • santos44santos44 Membre
    juillet 2012 modifié #72
    J'ai le même soucis, car comme ma classe hérite de NRGridView, quand je veux faire, self.view.backgroundView, il n'arrive pas à  me proposer backgroundView mais seulement backgroundColor.
  • muqaddarmuqaddar Administrateur
    'santos44' a écrit:


    J'ai le même soucis, car comme ma classe hérite de NRGridView, quand je veux faire, self.view.backgroundView, il n'arrive pas à  me proposer backgroundView mais seulement backgroundColor.




    Tu ne me parles pas du tout de la même chose.

    Moi, je parle du backgroundView de la cellule. Toi tu backgroundVew de la vue !
  • santos44santos44 Membre
    juillet 2012 modifié #74
    Je voulais dire que j'ai le même soucis que yass_1988 et que j'ai essayé de mettre une image sous ma grille. Problème, on ne me propose pas le backgroundView, seulement le backgroundColor a qui j'essaye de lui mettre une UIImage comme couleur et gridView avec clearColor, le soucis c'est que l'image se duplique quand je scroll, elle reste pas fixe
    [color=#b41ca4]self[/color][color=#000000].[/color][color=#578187]gridView[/color][color=#000000].[/color]backgroundColor[color=#000000]=[[/color]UIColor[color=#000000] [/color][color=#401082]clearColor[/color][color=#000000]];[/color][color=#7134aa]<br />
    [color=#000000]    [/color][color=#b41ca4]self[/color][color=#000000].[/color]view[color=#000000].[/color]backgroundColor[color=#000000] = [[/color]UIColor[color=#000000] [/color][color=#401082]colorWithPatternImage[/color][color=#000000]:[[/color]UIImage[color=#000000] [/color][color=#401082]imageNamed[/color][color=#000000]:[/color][color=#c72c25]@&quot;Default.png&quot;[/color][color=#000000]]];
    
    [/color][/color]
  • J'ai esseyé ta solution muqaddar:
    UIImageView[color=#000000] *v = [[[/color]UIImageView[color=#000000] [/color][color=#401082]alloc[/color][color=#000000]] [/color][color=#401082]initWithFrame[/color][color=#000000]:[/color][color=#b41ca4]self[/color][color=#000000].[/color]view[color=#000000].[/color]bounds[color=#000000]];[/color]<br />
    [color=#401082]<br />
    [color=#000000]    [v [/color]setImage[color=#000000]:[[/color][color=#7134aa]UIImage[/color][color=#000000] [/color]imageNamed[color=#000000]:[/color][color=#c72c25]@&quot;Default.png&quot;[/color][color=#000000]]];[/color][/color]<br />
        [[color=#b41ca4]self[/color].[color=#7134aa]view[/color] [color=#401082]addSubview[/color]:v];[color=#7134aa]<br />
    [color=#000000]    [/color][color=#b41ca4]self[/color][color=#000000].[/color][color=#578187]gridView[/color][color=#000000].[/color]backgroundColor[color=#000000]=[[/color]UIColor[color=#000000] [/color][color=#401082]clearColor[/color][color=#000000]];[/color]
    
    [/color]



    Mais du coup j'ai un fond noir en arrière plan qui ne correspond pas à  mon image
  • muqaddarmuqaddar Administrateur
    Y'a aucune raison que ça ne marche pas.



    J'ai ajouté à  l'arrache une image au dessous de NRGridView (avec IB)
  • yass_1988yass_1988 Membre
    juillet 2012 modifié #77
    Je suis débité de ne pas y arriver pour une foutus image en arrière plan, mais sinon sans IB tu aurais fais comment ?
  • muqaddarmuqaddar Administrateur
    'yass_1988' a écrit:


    Je suis débité de ne pas y arriver pour une foutus image en arrière plan, mais sinon sans IB tu aurais fais comment ?




    Comme toi, mais as-tu testé sans ta sous-classe ?
  • Oui, la solution que j'ai posté tout à  l'heure c'est sans ma sous classe, directement dans le viewDidLoad de mon viewController qui hérite de NRGridViewController et au lieu d'afficher mon image en arrière plan j'ai un fond noir en fond d'écran. Comprend pas
  • muqaddarmuqaddar Administrateur
    juillet 2012 modifié #80
    'ldesroziers' a écrit:


    J'avais déjà  répondu à  ton problème il me semble yass_1988..

    Sinon concernant le tiens, muqaddar, c'est à  toi de calculer sur quelle cellule la scrollView doit s'arrêter. Et en utilisant NRGridViewScrollPositionAtMiddle ça devrait faire son affaire. Le seul travail que tu as à  faire c'est de calculer ça en fonction de la décélération.



    Si il y a la moindre feature-request à  faire, merci d'utiliser github image/smile.png' class='bbc_emoticon' alt=':)' />




    Salut Louka,



    Je ne comprends pas quelque chose.

    Pourquoi les délégués de UIScrollView ne sont pas appelés dans mon contrôleur alors que les tiens le sont bien ?



    Tu as créé tes propres délégués conformes à  <UIScrollViewDelegate>, mais en aucun cas ils ne les remplacent, non ?



    Par exemple, dans mon contrôleur:


    - ([color=#b9369d]void[/color])scrollViewDidEndDragging:([color=#6f43a4]UIScrollView[/color] *)scrollView willDecelerate:([color=#b9369d]BOOL[/color])decelerate<br />
    {<br />
    [color=#d1342a][color=#000000]  [/color][color=#3f277d]NSLog[/color][color=#000000]([/color]@&quot;decelerate&quot;[color=#000000]);[/color][/color]<br />
    }
    




    n'est pas appelé.

    Je ne saisis pas. Une lacune de me ma part sur l'héritage ?



    Pourtant si je mets la même méthode dans mon autre contrôleur avec une UITableView cette fois (héritant autant de UIScrollView), la méthode est bien appelée !
  • juillet 2012 modifié #81
    Tu as bien la dernière version de NRGridView?

    Tu te conformes bien au protocol NRGridViewDelegate?



    Si tu crées la NRGridView à  l'aide d'un XIB, essaie de voir si ça marche en écrivant [[self gridView] setDelegate:self] dans le -viewDidLoad, au cas où..
  • J'en profite pour une petite question Louka image/smile.png' class='bbc_emoticon' alt=':)' />

    Comme tu le sais je suis sur le dev d'une app qui utilise NRGridView. Je supprime des des cells a différents index et j'aimerai animer le changement de frame des autres cells (au lieu de faire un bête et méchant reloadData directement).

    Aurais-tu une piste sur le comment de la chose ?
  • juillet 2012 modifié #83
    Si je dis pas de bêtises:


    <br />
    [UIView animateWithDuration:0.25<br />
    			  delay:0.<br />
    				  options:(UIViewAnimationOptionLayoutSubviews)<br />
    	 animations:^{<br />
    [[self gridView] __reloadContentSize];<br />
    }<br />
    	 completion:nil];<br />
    




    Du coup ça appèlera automatiquement le layoutSubviews de la gridView si tu la manipule dans le block d'animation... mais là  où j'ai un doute c'est si c'est vraiment le cas.. Me demande si ça ne fonctionne pas que si tu changes la frame uniquement..

    Bon ok là  je fais appel à  une méthode privée.. mais bon c'est de NRGridView donc vas-y.. Par contre je suis pas sûr que ça fonctionne quand même image/tongue.png' class='bbc_emoticon' alt=':P' /> À tester.

    Si jamais ça ne marche pas, tente de rajouter [[self gridView] layoutSubviews]; (Oui, je sais, c'est déconseillé d'appeler directement -layoutSubviews mais c'est le seul moyen pour que le layout soit animé si l'option d'animation ne fonctionne pas..)



    Edit: bon en fait c'est un peu plus délicat que ça, je pense pas que tu puisses faire quoi que ce soit actuellement sans tripoter les sources.

    J'ai pas le temps d'ajouter un mode édition, mais je sais que ça viendra d'ici septembre.. normalement..
  • Hum ça n'a pas l'air de marcher image/smile.png' class='bbc_emoticon' alt=':)' />

    Peut-être que je ne l'utilise pas bien.



    Au moment de delete, je supprime de mon tableau mes éléments sélectionnés et j'appelle ensuite l'animation (limite dans le completion je peux appeler mon reloadData). Rien à  faire ça ne s'anime pas.
  • muqaddarmuqaddar Administrateur
    juillet 2012 modifié #85
    'ldesroziers' a écrit:


    Tu as bien la dernière version de NRGridView?




    Non, et c'était la raison de mon échec.

    Maintenant, ça marche avec la dernière version. image/thumbsup.gif' class='bbc_emoticon' alt='' />
  • 'Ceetix' a écrit:


    Hum ça n'a pas l'air de marcher image/smile.png' class='bbc_emoticon' alt=':)' />

    Peut-être que je ne l'utilise pas bien.



    Au moment de delete, je supprime de mon tableau mes éléments sélectionnés et j'appelle ensuite l'animation (limite dans le completion je peux appeler mon reloadData). Rien à  faire ça ne s'anime pas.




    Oui c'est normal, le reloadData fout les cellules dans la "corbeille de recyclage", et les supprime de l'écran immédiatement.
  • Bon je réfléchi à  un truc pas trop dégueu pour l'édition de la gridView et j'essai de l'implémenter dans les prochains jours.. Si tu y tiens.. image/smile.png' class='bbc_emoticon' alt=':)' />
  • Lol non mais t'inquiète pas si tu as d'autres chats à  molester fais je t'en prie ^^

    Je regarderai ce truc en dernier ça n'est pas ma priorité pour le moment. C'est du peaufinage
  • Bon je sais pas si c'est la fatigue ou non mais j'essaie en vain d'avoir mes cells espacées de la même façon et que la marge (gauche et droite) soit aussi à  cette valeur ... Le pire c'est que je l'ai fait pour une autre vue mais je trouve paaaasssss (et ça me tue).

    Si quelqu'un peut me sortir de ma torpeur ... image/huh.gif' class='bbc_emoticon' alt='???' />
  • p-e jouer avec le contentInset?



    J'en profite pour fortement vous inciter à  mettre à  jour NRGridView si vous l'utilisez car je viens de régler un problème de perfs à  cause du background de selection par défaut des cellule qui bouffait bcp trop de CPU à  cause du drawing. Désormais il n'est instancié que si besoin, cà d à  la selection d'une cellule. Merci le "Time profiler" de Instruments <3
  • Je vais regarder ça alors. Thx



    Yes faut que je mette à  jour tes sources image/smile.png' class='bbc_emoticon' alt=':)' />

    (d'ailleurs si tu as des feedbacks sur ma dernière beta ...)
Connectez-vous ou Inscrivez-vous pour répondre.