Registriert seit: 22. Okt 2012
267 Beiträge
|
AW: iOS7 XE5 Appstore geht nicht ?!
6. Okt 2013, 10:20
Also sofern man die 3 zusätzlichen Bildformate (144x144, 120x120, 152x152) in die plist einträgt funktionieren die für IOS7 entwickelten Apps auch mit dem Apploader. Der zickt jedoch aus unerfindlichen Grünen mitunter - so hatte ich gestern andauernd "application identifier entitlement is missing" Fehler die aber heute morgen mit der selben Binary nicht mehr aufgetreten sind.
Was mir etwas fehlt ist so ein automatischer Wizard der die 18 Icons?!? auf Basis eines Bildes erstellt. Bis auf die Hintergrundbilder sind die ja sowieso alle quadratisch und da bietet es sich an etwas an Arbeit abzunehmen Auch reichen meiner Meinung nach für die Loader schwarze PNG's, denn mitunter sieht man diese sowieso nur 1-2 Sekunden und dafür lohnt es sich nicht wirklich bunte Bilder mit Auflösungen die teilweise die des eigenen Monitors überschreiten zu erstellen.
Delphi-Quellcode:
function FitRect(var R: TRectF; const BoundsRect: TRectF): Single;
var
ratio: Single;
begin
Result := 1;
if RectWidth(BoundsRect) * RectHeight(BoundsRect) = 0 then
Exit;
if (RectWidth(R) / RectWidth(BoundsRect)) >
(RectHeight(R) / RectHeight(BoundsRect)) then
ratio := RectWidth(R) / RectWidth(BoundsRect)
else
ratio := RectHeight(R) / RectHeight(BoundsRect);
R := RectF(0, 0, round(RectWidth(R) / ratio), round(RectHeight(R) / ratio));
Result := ratio;
RectCenter(R, BoundsRect);
end;
procedure TfrmWizard.FormCreate(Sender: TObject);
begin
btnConvert.enabled := false;
FDir := '';
end;
procedure TfrmWizard.btnLoadClick(Sender: TObject);
begin
if dlgOpen.Execute then
begin
FDir := extractfilepath(dlgOpen.FileName);
btnConvert.enabled := true;
imgOriginal.Bitmap.LoadFromFile(dlgOpen.FileName);
end;
end;
procedure TfrmWizard.btnConvertClick(Sender: TObject);
const
cSizes: Array [0 .. 10] of integer = (29, 50, 57, 58, 72, 76, 100, 114, 120,
144, 152);
cLayoutSizes: Array [0 .. 6] of record x,
y: integer end = ((x: 1024; y: 748), (x: 1536; y: 2008), (x: 2048; y: 1496),
(x: 320; y: 480), (x: 640; y: 1136), (x: 640; y: 960), (x: 768; y: 1004));
var
i: integer;
bmp: TBitmap;
src, dst: TRectF;
begin
for i := 0 to high(cSizes) do
begin
bmp := TBitmap.Create(cSizes[i], cSizes[i]);
bmp.Canvas.BeginScene(nil);
bmp.Canvas.Clear(0);
src := RectF(0, 0, imgOriginal.Bitmap.Width, imgOriginal.Bitmap.Height);
dst := src;
FitRect(dst, RectF(0, 0, bmp.Width, bmp.Height));
bmp.Canvas.DrawBitmap(imgOriginal.Bitmap, src, dst, 1);
bmp.Canvas.EndScene;
bmp.SaveToFile(format('%s%dx%d.png', [FDir, cSizes[i], cSizes[i]]));
bmp.Free;
end;
for i := 0 to high(cLayoutSizes) do
begin
bmp := TBitmap.Create(cLayoutSizes[i].x, cLayoutSizes[i].y);
bmp.Clear($FF000000);
bmp.SaveToFile(format('%s%dx%d.png', [FDir, cLayoutSizes[i].x,
cLayoutSizes[i].y]));
bmp.Free;
end;
end;
Vielleicht findet jemand obigen Code ja praktisch.
Geändert von CHackbart ( 6. Okt 2013 um 10:52 Uhr)
|