码迷,mamicode.com
首页 > 移动开发 > 详细

XE8 for iOS 状态栏的几种效果

时间:2015-05-22 23:50:04      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

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. 设定 BorderStyle = ToolWindows。(利用设定此项来显示透明效果,请见下方源码修改)
  6. 需要 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;

 

XE8 for iOS 状态栏的几种效果

标签:

原文地址:http://www.cnblogs.com/onechen/p/4523431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!