查找存储启动图像的位置

时间:2013-08-06 21:13:14

标签: ios delphi delphi-xe5 delphi-xe4 delphi-xe6

部署页面声明启动图像存储在root中。

但是,使用 FileExists 时,以下所有路径都会返回false ...

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');

2 个答案:

答案 0 :(得分:2)

启动图像应存储在与文档描述的应用程序相同的文件夹中。您应该能够使用NSBundle.pathForResource获取文件名。

uses
  iOSapi.Foundation, Macapi.Helpers;

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName: string;
begin
  FileName := NSStrToStr(TNSBundle.Wrap(TNSBundle.OCClass.mainBundle).pathForResource(NSSTR('Default'), NSStr('png')));
  //....
end;

技巧可能是启动映像的文件名不一定与IDE中的文件名相同。您可以列出应用程序中的所有文件,如下所示:

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;

您还可以使用像DiskAid这样的工具来查看Windows上的iOS应用程序文件夹。

答案 1 :(得分:1)

默认图像存储在此目录中(您可以使用MacOS上的终端找到它)

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

如果您要求如何找到自上传文件, 以下是指示:

  1. 点击Project>主菜单中显示Deployment
  2. 点击Add files
  3. 添加想要的文件
  4. 将文件位置从.\更改为StartUp\Documents\
  5. 点击Connect to Remote Machine按钮(几秒后,列Remote Status应显示Missing
  6. 点击Deploy按钮,等待Remote Status成为Same
  7. 现在应该可以从您的应用程序代码访问该文件:

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

    编译代码在iOS设备或iOS模拟器中运行它。它应该工作,玩得开心!

    备注:

    1. 在iOS上,文件名区分大小写。
    2. 不要将.bmp上传到iOS,因为我认为iOS不支持位图。
    3. Andriod设备的文件位置不同。 (但谁在意)