2010-06-03 5 views
5

Tout d'abord, il y a enfin le support NinePatch pour l'iPhone, BIG grâce à l'équipe Tortuga 22 pour ça. Malheureusement pour moi, je n'ai pas pu ajouter leur bibliothèque à mon projet.Comment puis-je inclure la bibliothèque Tortuga 22 NinePatch dans mon projet XCode?

Si je viens de glisser-déposer les fichiers-source dans mon projet, je reçois une tonne de "Aucun fichier ou répertoire" -errors. Si je référence le fichier libNinePatch.a en tant que framework externe, j'obtiens le même résultat.

Quelle est la bonne façon de faire cela? Il n'y a pas d'instructions de leur part, donc je suppose qu'il doit y avoir une façon assez simple de le faire.

Merci d'avance.
// Abeansits

+1

J'ai le même problème, si je fais glisser et déposer des fichiers je ne peux pas tout compiler. – DixieFlatline

Répondre

1

Je tiens juste à dire à tous ceux qui ont encore du mal avec ça que j'ai uploadé un podspec dans le dépôt de CocoaPod.

Cela signifie que si votre projet utilise CocoaPods (et pourquoi pas?), Vous pouvez simplement ajouter:

pod 'Tortuga22-NinePatch'

Pour votre PODFILE et vous aurez le soutien NinePatch. (notez que ce n'est pas encore compatible ARC, les demandes de pull sont les bienvenues!)

+1

Puisqu'il s'agit d'une question vraiment ancienne et Cocoapods est la nouvelle façon d'ajouter des bibliothèques, je vais aller de l'avant et marquer ceci comme la réponse à la question. – ABeanSits

0

Vous devriez pouvoir ajouter les fichiers à votre projet. Les réponses à this SO question peuvent aider.

Sachez également que UIImage fournit des images extensibles. Voir -stretchableImageWithLeftCapWidth:topCapHeight: pour plus de détails. Cela ne vous aidera pas si vous avez besoin de lire des images au format neuf patch, peut-être pour partager des ressources avec une application Android, mais c'est souvent tout ce dont vous avez réellement besoin.

+0

Je reçois des erreurs sur des lignes comme celle-ci "NPParameterAssertNotNilIsKindOfClass (loggingTags, NSArray)". Aussi je voudrais partager des résoruces avec Android, je pensais que c'est possible avec cette bibliothèque? – DixieFlatline

0

Êtes-vous # en train d'inclure le (s) fichier (s) d'en-tête principal (s) dans les classes dont vous avez besoin ou dans le fichier prefix.pch?

0

Si vous téléchargez leur source package à partir de GitHub, vous verrez qu'ils ont inclus un exemple de projet, NinePatchDemo. Inspecter cela devrait vous donner toutes les informations dont vous avez besoin.

Vous verrez qu'ils ont simplement déposé le projet NinePatch Xcode dans le projet NinePatchDemo, sous "Autres sources". Vous pouvez glisser et déposer le projet NinePatch dans le vôtre de la même manière. Vous pouvez vérifier les paramètres de construction et de cible pour vous assurer que vous incluez les chemins/bibliothèques dont vous avez besoin pour construire.

Il semble que vous vouliez -all_load -ObjC dans d'autres indicateurs de liens pour votre cible, et si votre dossier de projet est au même niveau que le dossier ninepatch (comme dans le téléchargement de github), vous devrez également définir l'en-tête Recherchez Chemins sur votre cible à ../NinePatch//**, variant en conséquence si vous avez déplacé des dossiers.

Autre que la seule chose que je peux voir est que vous, bien sûr, besoin d'inclure les en-têtes avec #import <TUNinePatch.h>

NinePatchDemo construit bien pour moi, afin que je puisse vérifier que la source fonctionne.

+0

Salut Evan, j'ajoute aussi ninepatch library.it travaille dans simulator.while je cours dans l'appareil il montre error.please m'aider – banu

+1

Je n'ai jamais utilisé réellement la bibliothèque, juste expliqué comment on installe normalement une bibliothèque de tiers ci-dessus (c'était avant les cocoapodes). Le projet semble ne pas avoir été mis à jour depuis deux ans, vous devriez probablement chercher une alternative ou le fourrer vous-même et le faire fonctionner. –

+0

Merci pour votre information Evan.Si vous savez en utilisant neuf image patch, S'il vous plaît partager ce link.it sera utile pour moi et d'autres – banu

1

Je sais que c'est une vieille question, mais juste pour aider les gens qui recherchent ninePatch dans l'objectif c, je tiens à informer que la classe UIImage de ios 5 on, ont une méthode pour faire ce que ninePatch.

De UIImage reference:

Discussion

Vous utilisez cette méthode pour ajouter cap à une image empiècements ou changer le cap existant d'une image empiècements. Dans les deux cas, vous obtenez en arrière une nouvelle image et l'image originale reste intacte.

Lors de la mise à l'échelle ou du redimensionnement de l'image, les zones couvertes par un calque sont non mises à l'échelle ou redimensionnées. Au lieu de cela, la zone de pixel non couverte par la casquette dans chaque direction est mosaïque, de gauche à droite et de haut en bas, pour redimensionner l'image . Cette technique est souvent utilisée pour créer des boutons de largeur variable , qui conservent les mêmes coins arrondis mais dont la zone centrale se développe ou se rétracte selon les besoins. Pour optimiser les performances, utilisez une zone en mosaïque d'une taille de 1 x 1 pixel.

Disponibilité Disponible sur iOS 5.0 et versions ultérieures.

Déclaré Dans UIImage.h

Un exemple d'utilisation si vous voulez une image avec un top fix:

UIImage* image = [UIImage imageNamed:@"YourImage.png"]; 
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(25., 0, 0, 0)] 

Je espère que ça aide.

Questions connexes