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 := ; {+++>} // 加入下面代码
if AForm.BorderStyle = TFmxFormBorderStyle.ToolWindow then
begin
StatusBarHeight := ;
FStatusBarHeight := ;
Result.origin := CGPointMake(, );
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. 设定好以上,发布到真机,状态栏下方的线就看不见了。

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. javascript之-深入事件机制

    作者:yuyuyu链接:https://zhuanlan.zhihu.com/p/24620643来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1.1 事件绑定的方式 ...

  2. Atititi.名字 姓名 name 起名naming spec 的构成结构规范v2 qc2.docx

    Atititi.名字 姓名 name 起名naming spec 的构成结构规范v2 qc2.docx 1.1. 职业名 官职等 amir 阿米尔 放前面1 1.2. 本名1 1.3. 父名,祖名,一 ...

  3. Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15

    Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15 1. attilax重要案例的分类(atiuse,auBackTech,bizImp)3 1.1. 两个book3 1.2. ...

  4. java实现栈与队列

    一.栈 栈是一种特殊的线性表.其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行.(先进后出) 访问权限:栈限制了访问权限,只可以访问尾节点,也就是最后添加的元素 即栈顶的元素 /** * ...

  5. Liferay7 BPM门户开发之40: Form表单的Action到Render的数据传递

    在Form提交后的变量,很多情况是要展现在jsp页面中,这时Action到Render的变量传递就非常有用. 例如,您在数据库中添加了学生的详细信息. 为了实现这一需求,先创建Form表单(学生的细节 ...

  6. java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E

    21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...

  7. react-native —— 在Windows下搭建React Native Android开发环境

    在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...

  8. sublime text2小技巧

    1. 文件快速导航: 这是sublime上面很好用的功能之一,ctrl+p可以调出窗口,菜单上的解释是gotoanythings ,确实如其所言,调出窗口后,直接输入关键字,可以在已打开的项目文件夹中 ...

  9. Command /usr/bin/codesign failed with exit code 1

    刚刚碰到相同的问题,自己解决了,很简单,profile冲突,(自己遇到的现象是之前的profile关联的certificate过期,然后重新生成 了certificate和更新了profile.但是是 ...

  10. poj 1905Expanding Rods

    /* 二分 + 几何 弧长L, 圆半径R, 弧度 q, L=R*q; 二分: 弧度(0~PI) 或者 高度(L/2~L) */ #include<cstdio> #include<i ...