Hallo zusammen,
ich möchte in meiner Fmx App (RadStudio XE8 Pro, Upd1), für verschiedene Views verschiederne ScreenOrientations festlegen.
Dazu gibe es einen ScreenService, der das wie folgt machen soll:
Code:
// Sets the possible Screen orientations (Portrait, Landscape, InvertedPortrait, InvertedLandscape);
procedure Screen_Orientation_Set(const orientSet : TScreenOrientations );
var
ScreenService: IFMXScreenService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
begin
ScreenService.SetScreenOrientation(orientSet);
end;
end;
Damit das funktinoiert (auch die Events bei OnOrientationChange übrigens), muss wohl in
den Options\Application\Orientation die
Liste der Kandidaten angeclickt sein.
Soweit, so gut.
Aber wenn ich weiter in die Sourcen schaue sieht es bei iOS so aus:
Code:
procedure TPlatformCocoaTouch.SetScreenOrientation(
AOrientations: TScreenOrientations);
begin
// Not needed for iOS
end;
Das ist offenbar nie dafür gedacht gewesen die ScreenOrientation mal eben per Runtime festzulegen,
sondern einmal für die ganze App.
Bei Android gibt es etwas im Sourcecode, das muss ich noch ausprobieren,
aber ich möchte das halt für beide gleich haben.
Ich möchte halt die eine View so festlegen:
Code:
Screen_Orientation_Set([Portrait, Landscape, InvertedPortrait, InvertedLandscape] );
und die andere View z.B. so:
Code:
Screen_Orientation_Set([Portrait, InvertedPortrait, ] );
Geht das überhaupt, und wenn ja wie ?
Der ScreenOrientation Service scheint jedenfalls nicht dafür zu gebrauchen zu sein (wofür er
dann überhaupt da ist wäre noch eine andere Frage ...).
Rolf