2013-08-06 3 views
3

Страница развертывания: изображения запуска хранятся в корне.поиск места размещения, где хранятся снимки запуска

Однако все следующие пути возврата ложь при использовании FileExists так ...

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

Это просто «имя файла». Нет пути. Что ты пытаешься сделать? –

+0

Я хочу загрузить изображение запуска в TBitmap. Для этого мне нужен (полный) путь к тому, где они хранятся. Это для этого SO: http: // stackoverflow.com/questions/17994429/delphi-ios-reuse-launch-image-for-app-background – Tom

+0

Всегда добавляйте тег delphi к вашему вопросу и избегайте этих тегов в заголовке –

ответ

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 для того, чтобы посмотреть на папку приложения IOS на Windows.

+0

Я позволил Delphi добавить изображения запуска через параметры проекта - они работают во время запуска приложения. К сожалению, я получаю * ноль * при попытке код: TNSBundle.Wrap ( TNSBundle.OCClass.mainBundle ) .pathForResource ( NSSTR ('LaunchImage_320x480') , NSSTR ('PNG') ) ; – Tom

+0

DiskAid вообще не показывал файлы под моим приложением :( – Tom

+0

Возможно, вам придется изменить настройки в DiskAid, чтобы отобразить корневую папку вашего приложения. Но я думаю, что недостающая часть заключается в том, что образ запуска не обязательно называется LaunchImage .... Я обновил это в своем ответе –

1

По умолчанию изображения сохраняются в этой директории (вы можете найти его с помощью терминала на MacOS)

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

.

Если вы спрашиваете о том, как найти файлы самостоятельно загружать, Вот инструкция:

  1. Нажмите Project>Deployment из главного меню.
  2. Добавьте файлы желаемых товаров, нажав Add files.
  3. Изменение расположения файла из .\ в StartUp\Documents\
  4. Нажмите кнопку Connect to Remote Machine (после нескольких секунд, столбец Remote Status должен показать Missing
  5. Нажмите кнопку Deploy и ждать Remote Status стать Same

сейчас файл должен быть доступен из вашего кода приложения:

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 отличается. (но кому это интересно)
+1

Это добавит второй набор изображений запуска. Но мобильное приложение должно храниться как можно меньше. –

+0

Просто для подтверждения, я ищу решение, которое будет «повторно использовать» изображения запуска, которые Delphi включает/развертывает. Я не хочу разворачивать дополнительную копию всех моих изображений запуска. (Тем не менее, может оказаться, что это невозможно. Если это причина, я думаю, это было бы единственным решением.) – Tom

+1

@Tom Я проверил изображения по умолчанию проекта firemonkey на XE6, нет файла под названием ' LaunchImage_' что-то. Большинство из них - «FM_ * .png». Где вы видите эти файлы? – stanleyxu2005