2017-09-12 3 views
0

Comme le titre l'indique. J'ai un UIImageView et j'insère CAShapeLayers dans la vue. Le problème est que je ne sais pas comment les insérer derrière l'image de l'UIImageView. Tout conseil serait très apprécié, merci.Insérez CAShapeLayer derrière l'image dans UIImageView

+0

Ne jouez pas avec la couche de UIImageView. Suivez la suggestion @LeoDabus et enveloppez-la sur un UIView et ajoutez le calque à la dernière – hfehrmann

+0

Aucun d'entre vous n'a répondu à ma question. Je suis conscient que je pourrais créer une seconde vue sous/comme un conteneur, mais pour de nombreuses raisons, je voudrais éviter une telle solution. J'ai également inséré les calques dans le UIImageView et tout fonctionne bien et bien testé. Le seul problème est que je ne sais pas comment insérer les choses sous l'image. Si ce n'est pas possible, dites "Ce n'est pas possible", si vous n'êtes pas sûr, vous ne devriez pas répondre. Mais s'il vous plaît ne perdez pas mon temps, j'ai posé la question spécifique que j'ai faite pour une raison. – Blue

+0

@LeoDabus Vous ne connaissez donc pas la réponse? Merci d'avoir essayé, bonne journée. – Blue

Répondre

1

Vous pouvez essayer de réorganiser les calques, mais vous risquez d'être contrecarré par le code interne de UIImageView. Ma suggestion serait de créer une vue de conteneur et d'y ajouter vos sous-couches, puis d'ajouter la vue de l'image en tant que sous-vue (qui l'ajoute essentiellement en tant que sous-couche). Tant que l'image est transparente et que UIImageView n'est pas opaque, cela fonctionnera. Ce code a fonctionné pour moi dans un terrain de jeu:

let container = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 
let imageView = UIImageView(frame: container.bounds) 
imageView.image = UIImage(named: "duck.png") 
imageView.isOpaque = false 

let shape = CAShapeLayer() 
shape.path = UIBezierPath(roundedRect: container.bounds, cornerRadius: 2).cgPath 
shape.strokeColor = UIColor.black.cgColor 
shape.lineWidth = 10 
shape.fillColor = UIColor.blue.cgColor 
shape.borderColor = UIColor.black.cgColor 
container.layer.addSublayer(shape) 
container.addSubview(imageView) 

Bonne chance!

+0

Donc, ce que vous dites est que l'UIImageView pourrait ne pas permettre à quelque chose d'exister en dessous de l'image et je dois faire un conteneur de vue séparé. C'est dommage. Merci d'avoir pris le temps. – Blue