2013-08-06 1 views
3

Les états de page de déploiement des images de lancement sont stockés dans root.recherche d'emplacement où les images de lancement sont stockées

Cependant, tous les chemins suivants return false lors de l'utilisation FileExists donc ...

FileExists(TPath.GetHomePath + PathDelim + 'LaunchImage_320x480.png'); 
FileExists(TPath.GetHomePath + PathDelim + Application.Title + '.app' + PathDelim + 'LaunchImage_320x480.png'); 
FileExists(TPath.GetDocumentsPath + PathDelim + 'LaunchImage_320x480.png'); 
FileExists('' + 'LaunchImage_320x480.png'); 
FileExists('.\' + 'LaunchImage_320x480.png'); 
+0

C'est juste "nom de fichier". Pas de chemin. Qu'essayez-vous de faire? –

+0

Je veux charger l'image de lancement dans un TBitmap. Pour cela j'ai besoin du chemin (complet) où ils sont stockés. C'est pour ce SO: http: // stackoverflow.com/questions/17994429/delphi-ios-réutiliser-lancement-image-pour-application-fond – Tom

+0

S'il vous plaît toujours ajouter la balise delphi à votre question et éviter ces balises dans le titre –

Répondre

2

Les images de lancement doivent être stockés dans le même dossier que l'application tel que décrit par la documentation. Vous devriez pouvoir obtenir le nom de fichier en utilisant NSBundle.pathForResource. L'astuce pourrait être que les noms de fichiers de l'image de lancement ne sont pas nécessairement identiques à ceux de l'EDI. Vous pouvez lister tous les fichiers dans votre application comme ceci:

uses 
    iOSapi.Foundation, Macapi.Helpers, System.IOUtils; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    FileName: string; 
    files: TStringDynArray; 
    AppFolder: string; 
    I: Integer; 
begin 
    AppFolder := NSStrToStr((TNSBundle.Wrap(TNSBundle.OCClass.mainBundle).bundlePath)); 
    Files := TDirectory.GetFiles(AppFolder); 
    for I := 0 to Length(Files) - 1 do 
    Memo1.Lines.Add(ExtractFileName(Files[I])); 
end; 

Vous pouvez également utiliser un outil comme DiskAid afin de jeter un oeil au dossier de l'application iOS sous Windows.

+0

J'ai laissé Delphi ajouter les images de lancement à travers les options du projet - elles fonctionnent pendant le lancement de l'application. Malheureusement, je reçois * * zéro lorsque vous essayez votre code: TNSBundle.Wrap ( TNSBundle.OCClass.mainBundle ) .pathForResource ( NSSTR ('LaunchImage_320x480') , NSSTR ('.png') ) ; – Tom

+0

DiskAid n'affiche aucun fichier sous mon application :( – Tom

+0

Vous devrez peut-être modifier les préférences dans DiskAid afin qu'il affiche le dossier racine de votre application.Mais je pense que la pièce manquante est que l'image de lancement n'est pas nécessairement appelée LaunchImage J'ai mis à jour ceci dans ma réponse –

1

Les images sont stockées par défaut dans ce répertoire (vous pouvez le trouver à l'aide d'un terminal sur Mac OS)

DirPath := TPath.Combine(TPath.GetHomePath, Application.Title + '.app'); 

.

Si vous demandez comment localiser les fichiers auto-upload, Voici les instructions:

  1. Cliquez Project>Deployment dans le menu principal. Ajouter les fichiers souhaités en cliquant sur Add files.
  2. Modifier l'emplacement du fichier .\-StartUp\Documents\
  3. Cliquez sur le bouton Connect to Remote Machine (après quelques secondes, la colonne Remote Status doit montrer Missing
  4. Cliquez sur le bouton Deploy et attendre Remote Status deviennent Same

maintenant le fichier doit être accessible à partir du code de votre application:

ImagePath := TPath.Combine(TPath.GetDocumentsPath, 'LaunchImage_320x480.png'); 
if FileExists(ImagePath) then 
    Image1.Bitmap.LoadFromFile(ImagePath); 

Compilez votre code, exécutez-le sur votre appareil iOS ou sur un simulateur iOS. Ça devrait marcher et s'amuser!

Notes:

  1. Nom du fichier est sensible à la casse sur iOS.
  2. Ne pas télécharger .bmp vers iOS, car je ne pense pas iOS prend en charge bitmap.
  3. L'emplacement du fichier pour un périphérique Andriod est différent. (mais qui s'en soucie)
+1

Cela ajouterait un deuxième ensemble d'images de lancement. Mais une application mobile doit être aussi petite que possible. –

+0

Juste pour confirmer, je suis à la recherche d'une solution qui va "réutiliser" les images de lancement que Delphi inclut/déploie. Je ne veux pas déployer une copie supplémentaire de toutes mes images de lancement. (Cependant, il se peut que cela ne soit pas possible.Si c'est la cause, je suppose que ce serait la seule solution restante.) – Tom

+1

@Tom J'ai vérifié les images par défaut d'un projet firemonkey sur XE6, il n'y a pas de fichier appelé ' LaunchImage_' quelque chose. La plupart d'entre eux sont 'FM _ *. Png'. Où voyez-vous ces fichiers? – stanleyxu2005

Questions connexes