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 加入下面代码:

  1. function TPlatformCocoaTouch.CalculateFormViewFrame(const AForm: TCommonCustomForm): NSRect;
  2. var
  3. Orientation: NSUInteger;
  4. StatusBarHeight: Single;
  5. Tmp: Single;
  6. begin
  7. if IsPopupForm(AForm) then
  8. Result := CGRectMake(AForm.Left, AForm.Top, AForm.Width, AForm.Height)
  9. else
  10. begin
  11. Result := FMainScreen.bounds;
  12. StatusBarHeight := ;
  13.  
  14. {+++>} // 加入下面代码
  15. if AForm.BorderStyle = TFmxFormBorderStyle.ToolWindow then
  16. begin
  17. StatusBarHeight := ;
  18. FStatusBarHeight := ;
  19. Result.origin := CGPointMake(, );
  20. end
  21. else
  22. {<+++} // 加入上面代码
  23.  
  24. if AForm.BorderStyle <> TFmxFormBorderStyle.None then
  25. begin
  26.  
  27. ... ...
  28.  
  29. 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. 设定好以上,发布到真机,状态栏下方的线就看不见了。

XE8 for iOS 状态栏的几种效果的更多相关文章

  1. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

  2. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  3. ios中的几种多线程实现

    iOS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.下面根据抽象层次从低到高依次列出iOS所支持的多线程编程范式:1, Thread;2, Cocoa ...

  4. iOS状态栏颜色

    下面截图给出修改 iOS 状态栏颜色的 4 种方式 Target.png Info.plist.png Storyboard.png code.png 其中第四张图中的代码,直接写在你的任何一个 Vi ...

  5. iOS CAReplicatorLayer 实现脉冲动画效果

    iOS CAReplicatorLayer 实现脉冲动画效果 效果图 脉冲数量.速度.半径.透明度.渐变颜色.方向等都可以设置.可以用于地图标注(Annotation).按钮长按动画效果(例如录音按钮 ...

  6. IOS状态栏

    IOS状态栏是什么地方? 它是IOS设备屏幕顶部显示信号以及电池的区域.状态栏默认的高度是20像素,状态栏在软件开发中有何作用?联网应用中可在自动帮用户下载数据时使用,推荐在状态栏中予以显示.状态栏可 ...

  7. xmarin live player 连接 IOS以及安卓实现实时效果查看

    原文:xmarin live player 连接 IOS以及安卓实现实时效果查看 在之前有介绍过xamarin 单独IOS项目开发的运行环境搭建,但是这段时间我看到了xmarin forms 3.0  ...

  8. fakeLoader页面加载前loading演示8种效果

    提高用户体验的插件fakeLoader页面加载前loading演示8种效果 在线预览 下载地址 示例代码 <div id="main"> <div class=& ...

  9. jQuery瀑布流从不同方向加载3种效果演示

    很实用的一款插件jQuery瀑布流从不同方向加载3种效果演示在线预览 下载地址 实例代码 <section class="grid-wrap"> <ul clas ...

随机推荐

  1. navigationController pop的几种方法

    一,popViewControllerAnimated [self.navigationController popViewControllerAnimated:YES]; 二,popToRootVi ...

  2. EF架构~扩展一个分页处理大数据的方法

    回到目录 最近总遇到大数据的问题,一次性处理几千万数据不实际,所以,我们需要对大数据进行分块处理,或者叫分页处理,我在EF架构里曾经写过类似的,那是在进行BulkInsert时,对大数据批量插入时候用 ...

  3. [常见问题]在Linux下执行Redis命令不起作用.

    redis 127.0.0.1:6379> 这个后面无论输入什么命令都没有返回 ok 或者其他的信息,一直保持截图的状态: 解决方法:在SecureCRT中设置Options-->Sess ...

  4. iOS-Objective-C内存管理

    内存管理: 栈区 [stack]:由编译器自动分配并释放,一般存放函数的参数值,局部变量等 堆区 [heap]:由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收 全局区(静态区) ...

  5. D3+svg 案例

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  6. IOS开发之控件篇UITabBarControllor第二章 - 遮掩TableView问题

    在IOS7.0以后UITabBar 里面放入一个UITableView会出现一个问题,Table会被TabBar掩盖了,当移动到最后一项的时候,永远看不到,如下面的例子,总共是99项,但是只能显示到9 ...

  7. TypeScript实例

    interface Person { firstName: string, lastName: string } function greeter(person: Person) { return p ...

  8. Linux快速入门01-基础概念

    4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它.现在经过慢慢的成长,越来越觉得,Linux是每一个服务端工程师必须掌握的系统,即使是现在最 ...

  9. silverlight MouseLeftButtonDown事件总是无法触发

    参考解决办法:http://www.cnblogs.com/tianguook/archive/2011/05/13/2045299.html 在构造函数中首先添加一个事件: public BtnLi ...

  10. mongodb php

    首先安装扩展,然后才能使用mongodb 一.连接数据库 try { $mongo = new MongoClient(); $db = $mongo->mydb; var_dump($db); ...