`
啸笑天
  • 浏览: 3475136 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

画面切换出现的20px空白

 
阅读更多

 

iPhone软键盘占据216像素高,这对于iPhone仅仅320*480像素的屏幕来说,不能说不是一个很糟糕的事情。 为了避免输入控件被弹出的216像素高的软键盘所遮挡,程序员们想出了各种各样的方式,在软键盘弹出时调整窗口视图的尺寸。

程序员们普遍采用的一种方式,是监听软键盘事件。当软键盘弹出时,窗体的View被上移,当软键盘隐藏时,窗体的View恢复原来位置,这样就避免了输入控件被遮挡。

但是,由于SDK的原因,在View移动的过程中,会导致一个“20像素Bug”的问题。即键盘隐藏后,View下移的位置会偏离原来位置20个像素。这个Bug最直观的表现是,View的最下端露出了20像素的空白。

解决20像素的bug的方法很简单,就是在隐藏键盘时,手动将View的 y坐标下移20像素。

但是,对于另一种情况,我们做这样的调整则是多余的,它反而会在View的上端露出20像素空白。

SDK的这种Bug让我们无所适从。到底什么时候需要调整View的20像素,什么时候不需要调整呢?

问题就在于状态栏上。状态栏是否可视,直接影响这20像素是否需要调整。很显然,当statusBarHidden为NO(默认)时,view的有效高度为480,否则view的有效高度只有460而已。我们在xib中设计view的位置的时候,不管statusbar是否为None,view的origin都是(0,0),但SDK在加载xib之后,会根据statusBarHidden的属性自动调整view的位置,使得view最上端的20像素不会被状态栏所遮盖。

也就是说,当statusBarHidden为NO时,虽然我们在IB中看到view的origin是(0,0),但实际运行时,view的origin已经被SDK调整为正确的(20,0)。

因此,在键盘隐藏时,程序员不应该把view移动到(0,0)处,而应该调整到(20,0)处。因为SDK已经不会为我们做这件事情,我们得用自己的代码来做。

当然,如果你确实不需要在你的app中显示一个状态栏,我们会在application:didfinishLaunchWithOption:方法中这样做 :

[[UIApplicationsharedApplicationsetStatusBarHidden:YESwithAnimation:UIStatusBarAnimationNone];

注意,setStatusBarHidden:animated方法现在已经被新的方法所代替。

如果是这样,我们没有必要将view的位置调整到(20,0)。我们可以在代码中通过判断statusBarHidden的值来决定是否需要调整20像素。

int bug20px=([[UIApplicationsharedApplication]isStatusBarHidden]?0:20);

注意,statusBarHidden属性很奇怪,它既不是view的属性,也不是window的属性,而是UIApplication的属性。

另外还有一个问题,如果ViewController是使用NavigationController负责导航的,则这20像素也不需要调整。

int bug20px=([[UIApplicationsharedApplication]isStatusBarHidden]||viewController.navigationController?0:20);

分享到:
评论

相关推荐

    PX4模式切换流程图commander.cpp.pdf

    在PX4的飞行控制系统中,模式切换是指根据用户的需求或者飞行任务的需要,通过改变飞行控制器的状态,从而改变无人机的飞行行为。 从给定的文件内容中,我们可以提炼出以下几个关键知识点: 1. PX4的命令行接口...

    阿木社区 PX4 commander解析以及流程图

    Commder 是Px4 源码中的飞行控制命令切换模块,比如由自稳模式切换到,定高,定 点,自动模式。所有模式能不能成功切换,都在这个模块中做了相应的飞行条件检查。自稳 模式的切换,不需要太多的飞行条件。如果是定高...

    MITSUBISHI三菱PX Developer Version 1操作手册(GOT画面生成功能篇).pdf

    PX Developer Version 1操作手册(GOT画面生成功能篇) PX Developer Version 1操作手册(GOT画面生成功能篇)是MITSUBISHI三菱公司出品的用户手册,旨在指导用户正确地使用PX Developer Version 1操作手册中的GOT画面...

    inline-block元素的4px空白间距解决方案

    总的来说,解决`inline-block`元素之间的4px(或8px)空白间距问题,可以根据项目需求和浏览器兼容性选择合适的方法。调整HTML结构是最直接的解决方案,而设置父元素字体为0或使用负的`margin`则需要权衡可能带来的...

    PX4bootloader.rar_PIXHAWK bootloader_pixhawk_px4 bootload_px4 bo

    标题中的“PX4bootloader.rar_PIXHAWK bootloader_pixhawk_px4 bootload_px4 bo”指的是一款针对Pixhawk飞行控制器的bootloader程序,而Pixhawk是无人机和机器人系统广泛使用的开源硬件平台。Bootloader是系统启动时...

    px4中文维基

    PX4中文维基是一个涵盖了PX4开源飞行动态系统中文资料的综合性百科全书。PX4是一个非常先进的自动驾驶仪软件框架,广泛应用于多旋翼、直升机、垂直起降飞行器等各种类型的无人机。PX4中文维基的创建目的是为了提供一...

    PX4windows开发环境。包括px4_toolchain,px4drive,cmake.jdk,python,gcc。

    PX4是一款开源的无人机飞行控制系统,它主要用于无人驾驶航空器(UAV)的实时飞行控制。在Windows环境下进行PX4的开发需要配置特定的开发环境,其中包括了多个关键组件。以下是对这些组件的详细解释: 1. **px4_...

    PX4架构详细介绍

    PX4架构详细介绍 PX4是一种开源的无人机飞控软件,特别适用于研发无人驾驶飞行器(UAV)。PX4支持多种硬件平台,如Pixhawk系列,它提供了一整套用于无人机操作的飞行控制解决方案。PX4架构由多个模块组成,每个模块...

    PX4源码解读

    PX4是一种开源飞行控制系统,广泛应用于无人机、机器人车辆和其他自主系统的导航与控制。它基于实时操作系统(RTOS)设计,提供了一套完整的硬件抽象层、中间件层和应用层,允许开发者进行灵活的定制和扩展。 在...

    px4官方bootloader固件

    - 快速恢复:如果加载过程中出现问题,bootloader 可引导系统进入安全模式或回滚到已知良好的固件版本。 - 支持多种硬件:PX4 bootloader 适应各种硬件平台,如Pixhawk系列飞控板和其他兼容硬件。 - 固件更新:...

    px4固件 px4-autopilot

    PX4 Autopilot是一款开源飞行控制系统,主要用于无人机、多旋翼飞行器以及固定翼飞机等无人驾驶航空器。这个系统基于微控制器(MCU)和Linux操作系统,为开发者和研究人员提供了高度灵活和强大的飞行控制功能。在...

    PX4飞控固件项目的ROS2消息定义用于第三方软件使用ROS2节点对PX4内部uORB消息的通信

    构建这个包生成所有所需的接口,可以将ROS2节点与PX4飞控固件内部接口相连接,PX4飞控固件内部使用uORB消息API。目前,此包的消息表示对px4_ros_com包的依赖关系。 uORB消息定义与此包中的ROS2消息的相对应,可以在...

    px4flow电路原理图_px4flow光流原理_px4电路图_px4光流模块_px4flow电路原理图_

    PX4Flow是一款集成光流和超声波测距的传感器模块,常用于无人机自主导航、定位和避障。本文将详细解析PX4Flow的电路原理和光流技术的基础知识。 一、PX4Flow光流原理 光流是通过分析图像序列中像素的相对运动来...

    ptpx_trainging material

    ### Primetime PX Training Material:低功耗分析 #### 引言 随着电子设备越来越小巧、高效,对芯片设计中的功耗问题的关注度日益增加。在本训练材料中,我们将探讨如何利用Synopsys PrimeTime PX工具进行低功耗...

    px2vw一个px单位转成vw单位的VSCode插件

    这个插件的标题是"px单位转成vw单位的VSCode插件",它旨在帮助开发者快速、方便地将像素(px)单位转换为视口宽度单位(vw),以实现更灵活的响应式设计。 **px与vw单位介绍** 像素(px)是传统Web开发中最常用的...

    px、rem转换工具 grunt-px2rem-master

    在前端开发中,尺寸单位的转换是至关重要的,特别是在响应式设计中,为了实现不同设备上的适配,经常需要将像素(px)单位转换为相对单位(如rem)。`grunt-px2rem`是一个Grunt插件,专门用于批量处理CSS文件,将...

    px4飞控源码

    PX4飞控源码是无人机和机器人自主导航系统的核心组件,源自开源社区并托管在GitHub上。这个项目提供了飞行控制系统的设计、实现以及相关的软件开发工具,使得开发者和研究者能够自定义飞行行为,进行硬件集成,甚至...

    PX4固件源码,亲测可编译

    PX4是一款开源的飞行控制系统,广泛应用于无人机、自动驾驶汽车和其他机器人平台。它的核心是一个实时操作系统,设计用于处理复杂的飞行控制算法和传感器数据融合。在深入理解PX4固件源码之前,我们需要先了解一些...

    PX4飞控原理图

    PX4飞控是无人机和机器人领域广泛使用的开源飞行控制系统,其设计原理图是理解其工作方式的关键。在本文中,我们将深入探讨PX4飞控的原理,并基于"Hardware-master"这个压缩包文件来解析其硬件架构。 首先,PX4飞控...

    px4的gazebo仿真教程

    【PX4的Gazebo仿真教程】 在无人机和机器人领域,仿真环境的使用至关重要,它允许开发者在不涉及实际硬件的情况下测试和优化控制系统。在PX4开源飞控系统中,Gazebo是一个强大的仿真工具,提供了丰富的场景和多种...

Global site tag (gtag.js) - Google Analytics