8
votes

Une barre de progression droite à gauche est-elle possible sur iOS?

J'ai essayé d'envoyer des [uiprogressview setProgress] valeurs négatives, et cela ne fonctionne pas.

Y a-t-il une autre façon d'obtenir une barre de progression qui se remplit de la partie droite?


2 commentaires

Vous pouvez toujours créer votre propre barre de progression - ce n'est pas du tout difficile.


Pouvons-nous faire pivoter la barre de progression comme verticale?


8 Réponses :


11
votes

Vous pouvez essayer de définir le paramètre transformer code> Propriété de votre uiprogressview code> à un nouveau cgaffinetransform code> qui fait tourner la vue de 180 degrés et le retourne verticalement (Pour préserver le "brillance") (voir cgaffinetransformMake () code> et cgaffinetransformrotate () code>).

Quelque chose le long des lignes de: p>

UIProgressView *pv = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
pv.frame = CGRectMake(10, 100, 300, 11);
CGAffineTransform transform = CGAffineTransformMake(1, 0, 0, -1, 0, pv.frame.size.height); // Flip view vertically
transform = CGAffineTransformRotate(transform, M_PI); //Rotation angle is in radians
pv.transform = transform;
pv.progress = 0.5;


3 commentaires

Cela fonctionne, mais la bronzage sur le bar est maintenant à l'envers: puis-je le refléter verticalement?


Ah, je l'ai eu! PV.TRANSFORM = CGAFFINETRANSFORMSCALE (CGAFFINETANSFORMMAUSEOATION (M_PI), 1.0, -1.0); Merci!


@Autopulé - cela fonctionne simplement bien, ou vous pouvez utiliser le code mis à jour dans ma réponse.



2
votes

Vous pouvez faire pivoter la vue par 180 °:

progressView.transform = CGAffineTransformMakeRotation(-M_PI);


0 commentaires

8
votes

Vous pouvez faire pivoter le uiprogressview : xxx

degreestoradians est: xxx

Pour modifier la valeur de progression, utilisez des nombres positifs.


0 commentaires

1
votes

Dans iOS 7 avec des storyboards, vous pouvez définir la teinte de progression sur la teinte de la piste et inversement, puis soustraire la valeur normale de l'un et définir cela dans la progression actuelle. Probablement mieux de le faire l'autre (rotation), mais je pensais jetter cela là-bas.


0 commentaires

7
votes

Une version plus simple consiste à le renvoyer horizontalement.

progressView.transform = CGAffineTransformMakeScale(-1.0f, 1.0f);


0 commentaires

2
votes

Swift forte> Réponse:

progressView.transform = CGAffineTransform(rotationAngle: .pi)


0 commentaires

2
votes

Dans iOS 9+, vous pouvez utiliser SémanticContentiTatribute :

progresview.semanticContentaTatriBute = .forcerighttoleft


0 commentaires

0
votes
Swift 5 : progressView.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)

0 commentaires