Question

Je suis en train d'utiliser un UIImage avec stretchableImageWithLeftCapWidth pour définir l'image dans mon UIImageView, mais je suis confronté à un bug de mise à l'échelle étrange. Au fond image mon image comme un ovale qui est de 31 pixels de large. Gauche et à droite 15 pixels sont les capsules et le pixel du milieu est la partie mise à l'échelle.

Cela fonctionne bien si je mets le cap à gauche à 15. Cependant, si je mets à, disons, 4. Je vous attendre à obtenir une partie « centre » qui est un peu courbé comme il enjambe le centre tandis que les extrémités sont un peu pincé.

Ce que je reçois est le bouchon gauche semble correcte, suivie d'une partie mi-longue qui est comme si j'escaladé le seul pixel à pixel 5, puis une partie à droite de l'image où il se dilate et se ferme sur une largeur au sujet deux fois la largeur de l'image originale. L'image résultante est comme une ampoule de thermomètre.

Quelqu'un at-il vu un comportement étrange comme ça et peut savoir ce qui se passe?

Était-ce utile?

La solution

Votre observation est correcte, Joey. StretchableImageWithLeftCapWidth ne se développe pas tout le centre de l'image que vous attendez. Il ne fait qu'élargir la colonne de pixel juste à droite du capot gauche et la rangée de pixels juste au-dessous du capuchon supérieur!

Utilisez la propriété contentStretch de UIView à la place, et votre problème sera résolu. Un autre avantage à ce que contentStretch peut également réduire un graphique correctement, alors que stretchableImageWithLeftCapWidth ne fonctionne que lors de la plus grande graphique.

Autres conseils

Je ne sais pas si je vous ai bien, mais LeftCapWidth etc est fait pour des coins arrondis, avec tout dans le rectangle à l'intérieur du rayon d'arrondi est étirée pour adapter l'espace entre les « bouchons » sur le bouton de destination ou tel.

Donc, si votre ovale est plus grand ou plus large que 4 x 2 = 8, ce qui est dans le rectangle du milieu sera tendue. Et le vôtre est, il serait au moins regarder peu laid! Mais si ce n'est pas même symétrique, quelque chose a touché le tronçon. Peut-être quelque chose à voir avec l'origine ou le cadre, ou lorsqu'il est mis, ou peut-être il est mis deux fois, ou si vous avez deux images différentes sur étirées dessus de l'autre donnant l'apparence du thermomètre.

Une fois créé deux boutons identiques au même endroit, en utilisant le même objet retenu - de jeter bien sûr loin le bouton précédent. Alors je me suis demandé pourquoi diable le bouton ne disparaît pas quand je alpha ensemble à 0 ... Mais il l'a fait, il est juste qu'il y avait un bouton identique « mort » en dessous:)

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