1

我原以为 XE4 中会有一个OnRotate事件,但它似乎OnResize被使用了。了解。

但是,我需要确定设备的方向。我敢肯定这很简单,但谷歌帮不上忙!

4

3 回答 3

6

要检测设备的当前方向,您可以使用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;
于 2013-07-12T05:43:49.173 回答
1

似乎检查高度和宽度是一种方式。如果 h > w 则为纵向,否则为横向。很惊讶没有内置的东西。

于 2013-07-11T16:35:22.910 回答
0

您可以在主窗体的 OnResize 事件上使用我的函数。

函数 TERMainForm.GetOrientation: TScreenOrientation; var
OrientationS: IFMXScreenService; 如果TPlatformServices.Current.SupportsPlatformService
(IFMXScreenService, IInterface(OrientationS)) 开始,则
开始 Result := OrientationS.GetScreenOrientation;
end
else raise Exception.Create('Orientation not supported'); 结尾;

于 2013-07-12T10:29:42.120 回答