J'utilise setNeedsDisplayInRect:
autant que possible dans ma sous-classe UIView, mais je ne sais pas quoi faire dans drawRect:
. Quelle est la meilleure façon de détecter quelles parties de l'UIView doivent être dessinées? En ce moment j'ai divisé mon UIView en plusieurs CGRect
. Pour chaque CGRect
, j'appelle CGRectContainsRect()
pour vérifier si CGRect
doit être dessiné ou non. Est-ce la bonne façon, ou existe-t-il un meilleur moyen?Le moyen le plus efficace pour dessiner partiellement un UIView dans drawRect:
Répondre
Vous recherchez une tâche de partitionnement spatial classique. Selon la complexité de votre vue, vous pouvez utiliser différentes stratégies pour déterminer ce qui doit être dessiné. Si votre scène est très simple, dessiner tout ou partitionner la scène en zones discrètes et faire votre rectangle de délimitation est correct. Pour les scènes très complexes, il existe plusieurs bonnes structures de données (telles que octrees) pour représenter votre scène en tant qu'arbre et effectuer des requêtes spatiales pour les objets dans une région donnée.
Vérifiez le sujet de Cloisonnement Spacial sur Wikipédia: http://en.wikipedia.org/wiki/Space_partitioning
Vous voudrez dessiner n'importe quel rect qui est même partiellement dans le rect invalidé, donc vous voudrez utiliser CGRectIntersectsRect()
. Cela dit, j'ai vu peu de cas où il est logique de dessiner partiellement des UIViews - à moins d'avoir une très grande vue unique à l'intérieur d'une vue de défilement, vous pouvez tout aussi bien dessiner le tout.
- 1. Le moyen le plus efficace de dessiner dans Silverlight
- 2. Quel est le moyen le plus efficace pour dessiner un grand CGPath?
- 3. Le moyen le plus efficace pour dessiner des pixels individuels dans OpenGL ES (Cocos2d-iphone)
- 4. Actualiser UIView pour drawRect?
- 5. Pré-dessiner un UIView
- 6. Dessiner le graphique dans UIView
- 7. Le moyen le plus efficace pour dessiner des animations fluides sur google maps?
- 8. Benchmark UIView drawRect: méthode
- 9. Sql Server Le moyen le plus efficace pour rejoindre
- 10. Le moyen le plus efficace pour tester les liens
- 11. Le moyen le plus efficace pour créer des fichiers Excel
- 12. Le moyen le plus efficace pour obtenir des listes?
- 13. Le moyen le plus efficace de nommer un avatar utilisateur?
- 14. Le moyen le plus efficace d'indexer un tableau retourné?
- 15. Comment dessiner un UILabel dans -drawRect :?
- 16. Comment dessiner un UIImageView dans -drawRect :?
- 17. DrawRect de UIView à l'intérieur de UIScrollView
- 18. moyen le plus efficace pour trouver le plus grand des trois doubles dans .NET Microframework?
- 19. UIView drawRect vs initWithFrame
- 20. Le moyen le plus efficace pour écrire dans un fichier de largeur fixe (Ruby)
- 21. Le moyen le plus efficace pour détecter/sélectionner automatiquement la langue dans un site Web?
- 22. Le moyen le plus efficace pour déterminer si un élément HTML est dans la fenêtre d'affichage?
- 23. Comment dessiner un UIImage ou directement dans -drawRect :?
- 24. moyen le plus efficace pour obtenir des variables/membres
- 25. Django: moyen le plus efficace pour interroger de nombreux enregistrements?
- 26. Le moyen le plus efficace de faire 22 builds différents
- 27. Le moyen le plus efficace pour trouver le plus grand des trois nombres
- 28. UIView drawRect ne dessine rien pour moi?
- 29. Le moyen le plus efficace de convertir BCD en binaire
- 30. quel est le moyen le plus efficace d'écraser bitmapdata
On dirait que vous êtes désireux de choses de tuiles, avez-vous regardé l'aide d'un CATiledLayer à la place? Laissez-le faire le carrelage pour vous, et dessinez juste sur le calque. – jer