Question

Je regarde donc UIKit Dynamics et le seul problème que j'ai rencontré est si je veux créer un UIView avec un fichier personnalisé. drawRect: (par exemple, disons que je veux dessiner un triangle), il ne semble y avoir aucun moyen de spécifier le chemin du UIView (ou plutôt du UIDynamicItem) à utiliser pour un UICollisionBehavior.

Mon objectif est vraiment d'avoir des polygones sur l'écran qui entrent en collision exactement comme on pourrait s'y attendre.

J'ai trouvé une solution consistant à assembler plusieurs vues, mais cela semble excessif pour ce que je veux.

Existe-t-il un moyen simple de procéder, ou dois-je vraiment assembler les vues ?

Dan

Était-ce utile?

La solution

Regardez les vidéos de la WWDC 2013 sur ce sujet.Ils sont très clairs :par souci d'efficacité et de rapidité, seules les limites (rectangulaires) de la vue comptent lors des collisions.

MODIFIER Dans iOS 9, un élément dynamique peut avoir une limite de collision personnalisée.Vous pouvez avoir un rectangle dicté par le cadre, une ellipse dictée par le cadre ou une forme personnalisée - un UIBezierPath simple et fermé convexe dans le sens inverse des aiguilles d'une montre.Les propriétés concernées, collisionBoundsType et (pour une forme personnalisée) collisionBoundingPath, sont en lecture seule, vous devrez donc créer une sous-classe afin de les définir.

Autres conseils

Si vous voulez vraiment faire entrer en collision des polygones, vous pouvez envisager SpriteKit et son moteur physique (il semble partager beaucoup de points communs avec UIDynamics).Il peut se mélanger avec UIKit, mais peut-être pas aussi facilement que vous le souhaiteriez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top