XE8 for iOS 狀態欄的幾種效果


XE8 實現 iOS 狀態欄的幾種效果:

一、狀態欄底色:

  1. 開一個新工程。
  2. 設定 Fill.Color 顏色屬性。
  3. 設定 Fill.Kind = Solid。
  4. 無需修改任何官方源碼。

 

 

二、隱藏狀態欄(全屏):

  1. 開一個新工程。
  2. 設定 BorderStyoe = None。
  3. 無需修改任何官方源碼。

 

 

三、透明狀態欄(能見底圖):

  1. 開一個新工程。
  2. 設定底圖 Fill.Bitmap.Bitmap
  3. 設定 Fill.Bitmap.WrapMode = TitleStretch
  4. 設定 Fill.Kind = Bitmap
  5. 設定 FullScreen = True
  6. 設定 BorderStyle = ToolWindows。(利用修改源碼,讓指定為 ToolWindows 來顯示透明效果)
  7. 需修改源碼 FMX.Platform.iOS.pas

 

 

支持 iOS 5.x

與上述做法相同,只需再多加一個設定:

Project > Options > Version Info (在表格上按鼠標右鍵來增加)

Key Value
UIStatusBarStyle UIStatusBarStyleBlackTranslucent

 

 

 

 

修改方法:

請將源碼 FMX.Platform.iOS.pas 復制到自己的工程目錄里,再進行修改。

找到 TPlatformCocoaTouch.CalculateFormViewFrame 加入下面代碼:

function TPlatformCocoaTouch.CalculateFormViewFrame(const AForm: TCommonCustomForm): NSRect;
var
  Orientation: NSUInteger;
  StatusBarHeight: Single;
  Tmp: Single;
begin
  if IsPopupForm(AForm) then
    Result := CGRectMake(AForm.Left, AForm.Top, AForm.Width, AForm.Height)
  else
  begin
    Result := FMainScreen.bounds;
    StatusBarHeight := 0;

{+++>} // 加入下面代碼
    if AForm.BorderStyle = TFmxFormBorderStyle.ToolWindow then
    begin StatusBarHeight := 0; FStatusBarHeight := 0; Result.origin := CGPointMake(0, 0); end
    else
{<+++} // 加入上面代碼 

    if AForm.BorderStyle <> TFmxFormBorderStyle.None then
    begin

... 略 ...

end;

 

狀態欄下方線 (2015/12/15 補充):

目前在某些真機的狀態欄下方會顯示一條線,見下圖:

實測有線:iPhone 6s Plus (只有真機才看的到),(其它皆無此線,如:iPad mini 2, iPhone 4, iPhone 4s)

問題造成原因:不清楚,猜測應該是 Delphi 的問題(如果在意此問題,請自行去提交 QC)。

暫時解決方案:

  1. 將 Form.Transparency 設為 True
  2. 放一個 TRectangle 到 Form 里
    1. Rectangle1.Align 設為 Contents
    2. Rectangle1.Stroke.Kind 設為 None
    3. Rectangle1.Fill.Color 設為 $FFFEFEFE
    4. Rectangle1.HitTest 設為 False
  3. 設定好以上,發布到真機,狀態欄下方的線就看不見了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM