[iOS开发] 使用 TPopup 实现类似 Tooltips 类型的信息通知显示

在手机应用开发的过程中,有时候,我们要给用户一些简单的提示,这些提示不需要用户提示,在一定的时间之后,它就可以自动消失了。实际上,通过 FMX 而不是系统的接口就可以很简单的实现这一效果。下面简单说一下步骤,供大家参考:

  1. 在窗体上放一个 TPopup 和 TTimer,设置 TTimer 的 Interval 为 2500 毫秒,并且 Enabled 默认为 false。
  2. 在 TPopup 上放置一个 TRectangle ,然后在 TRectangle 上放置一个 TLabel,然后设置 TRectangle 和 TLabel 的对齐方式为 Client,然后你再根据需要调整下 TRectangle的边线及填充的颜色、透明度等信息,调整 TLabel 的文本对齐方式。
  3. 接下来,实现一个函数来计算要消息提示的内容的区域大小,并调用弹出的提示消息的布局位置,如果不设置位置,则会在你触控的位置附近显示,下面是一段参考,其中 lblMessage 是上面的 TLabel,popMessage 是上面的 TPopup,tmMessage 是上面的 TTimer。
    procedure TfrmMain.PopHint(const AMsg: String);
    var
      V: Single;
      R: TRectF;
    begin
      R := ClientRect;
      R.Inflate(-10, -10);
      lblMessage.Canvas.MeasureText(R, AMsg, true, [], TTextAlign.Leading,
        TTextAlign.Leading);
      popMessage.Width := R.Width + 20;
      popMessage.Height := R.Height + 20;
      lblMessage.Text := AMsg;
      Application.ProcessMessages;
      popMessage.IsOpen := true;
      tmMessage.Enabled := false;
      tmMessage.Enabled := true;
    end;
    
    procedure TfrmMain.tmMessageTimer(Sender: TObject);
    begin
      popMessages.IsOpen := false;
      tmMessage.Enabled := false;
    end;
  4. 好了,现在就可以直接调用 PopHint 来显示提示了。
滚动至顶部