我原以为 XE4 中会有一个OnRotate
事件,但它似乎OnResize
被使用了。了解。
但是,我需要确定设备的方向。我敢肯定这很简单,但谷歌帮不上忙!
我原以为 XE4 中会有一个OnRotate
事件,但它似乎OnResize
被使用了。了解。
但是,我需要确定设备的方向。我敢肯定这很简单,但谷歌帮不上忙!
要检测设备的当前方向,您可以使用statusBarOrientation
属于UIApplication
该类的方法。
试试这个样本
uses
iOSapi.UIKit;
function SharedApplication:UIApplication;
begin
Result:=TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication);
end;
procedure TForm23.Button1Click(Sender: TObject);
var
LOrientation: Cardinal;
begin
LOrientation := SharedApplication.statusBarOrientation;
if (LOrientation = UIDeviceOrientationLandscapeLeft) or (LOrientation = UIDeviceOrientationLandscapeRight) then
ShowMessage('Landscape')
else
if (LOrientation = UIInterfaceOrientationPortrait) then
ShowMessage('Portrait');
end;
似乎检查高度和宽度是一种方式。如果 h > w 则为纵向,否则为横向。很惊讶没有内置的东西。
您可以在主窗体的 OnResize 事件上使用我的函数。
函数 TERMainForm.GetOrientation: TScreenOrientation; var
OrientationS: IFMXScreenService; 如果TPlatformServices.Current.SupportsPlatformService
(IFMXScreenService, IInterface(OrientationS)) 开始,则
开始 Result := OrientationS.GetScreenOrientation;
end
else raise Exception.Create('Orientation not supported'); 结尾;