Ok, j'ai besoin de masquer un UICollectionView
horizontal pour qu'il ressemble à un ruban. Mon homologue web dev l'a fait avec un SVG qu'il a utilisé comme couche de masquage.Masquer UIView (UICollectionView) correctement
Et voici ce que je dois (Photo de notre application Web):
Petit détail dans l'image espacer côté, j'ai un SVG comme ceci:
Ce que je peux convertir avec succès en code UIBezierPath (Paintcode):
let pathPath = UIBezierPath()
pathPath.move(to: CGPoint(x: 0.05, y: 0))
pathPath.addCurve(to: CGPoint(x: 162.02, y: 3.8), controlPoint1: CGPoint(x: 0.05, y: 2.1), controlPoint2: CGPoint(x: 72.57, y: 3.8))
pathPath.addCurve(to: CGPoint(x: 324, y: 0), controlPoint1: CGPoint(x: 251.48, y: 3.8), controlPoint2: CGPoint(x: 324, y: 2.1))
pathPath.addLine(to: CGPoint(x: 324, y: 150.2))
pathPath.addCurve(to: CGPoint(x: 162.02, y: 154), controlPoint1: CGPoint(x: 324, y: 152.3), controlPoint2: CGPoint(x: 251.48, y: 154))
pathPath.addCurve(to: CGPoint(x: 0.05, y: 150.2), controlPoint1: CGPoint(x: 72.57, y: 154), controlPoint2: CGPoint(x: 0.05, y: 152.3))
pathPath.addCurve(to: CGPoint(x: 0, y: 0.17), controlPoint1: CGPoint(x: 0.05, y: 148.1), controlPoint2: CGPoint(x: 0, y: 0.17))
pathPath.usesEvenOddFillRule = true
UIColor.lightGray.setFill()
pathPath.fill()
Maintenant, qu'est-ce que je fais?
Merci Scott. Vous avez été partout sur mes questions, lol. Comment voulez-vous écrire ce code pour une taille changeante? Le contenu que j'ai projeté est un 'UITableViewCell'. Ainsi, le 'UICollectionView' incorporé change des cadres. Remplacer 'layoutIfNeeded()' quelque part et dessiner là? –
OK. J'ai édité la réponse pour tenir compte de la mise à l'échelle. Notez que je redimensionne le CGPath, ce qui signifie que plus vous agrandirez ou plus la «profondeur» du ruban changera. Vous pouvez résoudre ce problème en modifiant procéduralement la forme de masquage du ruban. –
Je devrais aussi mentionner que pendant que j'ai compilé ce code dans un Playground, je ne l'ai pas complètement exécuté –