1
votes

Est-ce que quelqu'un sait si iOS a une option pour ajouter cette fonctionnalité où en haut de votre vue se trouve cette vue grise arrondie?

C'est une barre qui ressemble à l'indicateur d'accueil en bas des applications qui s'affiche sur l'iPhone X. La 1ère image provient de l'application d'horloge. La 2ème image vient de Facebook, et la 3ème image est juste quelque chose que j'ai créé moi-même à partir de zéro. J'aimerais savoir si je dois réinventer la roue à chaque fois que je fais ça comme je viens de le faire? Ou y a-t-il quelque chose que je peux utiliser comme une sous-classe?

Voici une image pour mieux comprendre la vue grise arrondie dont je parle:

 entrez la description de l'image ici

J'ai essayé de regarder autour de l'indicateur d'accueil si je pouvais le sous-classer ou quelque chose comme ça. J'ai aussi essayé de regarder autour du contrôle segmenté mais pas de chance.


0 commentaires

3 Réponses :


1
votes

Non, il n'y a pas de vue par défaut intégrée à Swift pour obtenir cela. Mais il est extrêmement facile de créer cette vue grise. J'ai écrit ce code tout à l'heure et devrait fonctionner:

var grayView = UIView()
grayView.frame = CGRect(x: 187, y: 100, width: 50, height: 15)
grayView.layer.maskToBounds = true
grayView.layer.cornerRadius = grayView.frame.height/2
grayView.backgroundColor = .gray

view.addSubview(grayView)


0 commentaires

1
votes

Cet indicateur ressemble à une vue personnalisée très simple, je pense qu'il n'est absolument pas nécessaire de construire une roue


0 commentaires

1
votes

L'autre approche consiste à utiliser un CAShapeLayer :

let path = UIBezierPath()
path.move(to: CGPoint(x: 180, y: 100))
path.addLine(to: CGPoint(x: 220, y: 100))

let shapeLayer = CAShapeLayer()
shapeLayer.lineWidth = 15
shapeLayer.strokeColor = UIColor.lightGray.cgColor
shapeLayer.lineCap = .round
shapeLayer.path = path.cgPath

view.layer.addSublayer(shapeLayer)


0 commentaires