zoukankan      html  css  js  c++  java
  • 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. 设定好以上,发布到真机,状态栏下方的线就看不见了。
  • 相关阅读:
    form表单提交中文乱码(前台中文到JAVA后台乱码)问题及解决
    JSON工具类库: alibaba/fastjson 使用记录
    前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 "
    AJAX与后台交互传参的两种方式
    小米平板充不上电解决(非硬件问题+系统升级原因)
    对于异常的理解
    solr如何进行搜索实战,关键字全库搜索
    solr5.5.4 添加mysql数据,实现同步更新
    solr5.5.4 tomcat8部署
    log4j通过配置文件配置即,即可完成系统报错想向指定邮箱发送提醒消息,网上的很多方法都又问题
  • 原文地址:https://www.cnblogs.com/onechen/p/4523431.html
Copyright © 2011-2022 走看看