app的某些高度

本文探讨了iOS7与iOS6中视图布局的区别,特别是在导航栏处理上的不同。在iOS7中,self.view始终从状态栏下方开始,无论是否存在导航栏。


#define App_Frame_H         ([[UIScreen mainScreen] applicationFrame].size.height)
#define MAIN_FRAME_H        ([UIScreen mainScreen].bounds.size.height)
#define SELF_HEIGHT         self.view.frame.size.height

ios6下 4寸
2014-02-28 12:18:28.937 APP_SIZE[4605:c07] App_Frame_H::548.000000
2014-02-28 12:18:28.939 APP_SIZE[4605:c07] MAIN_FRAME_H::568.000000
2014-02-28 12:18:28.939 APP_SIZE[4605:c07] SELF_HEIGHT::548.000000

ios7下 4寸
2014-02-28 12:19:51.078 APP_SIZE[4664:a0b] App_Frame_H::548.000000
2014-02-28 12:19:51.080 APP_SIZE[4664:a0b] MAIN_FRAME_H::568.000000
2014-02-28 12:19:51.081 APP_SIZE[4664:a0b] SELF_HEIGHT::568.000000

分析一下
大家都知道ios7 self.view的起点是从屏幕的起点开始所以会从  548变到568


navigation

ios6 系统下如果有navigation  起点是从navigation 下开始的 ,没有navigation 是从statusBar下面开始


ios7无论有没有navigation都是从 statusBar下面开始

在 UniApp 中处理应用窗口高度相关的问题,主要可以通过 `uni.getSystemInfoSync()` 或 `uni.getSystemInfo()` 方法获取设备信息,其中包含应用窗口的高度信息。获取到这些信息后,可以根据不同设备的屏幕特性进行适配处理,尤其是在不同设备上进行页面布局时尤为重要。 应用窗口的高度可以通过 `windowHeight` 属性获取,该属性返回的是应用窗口的可用高度(不包括系统状态栏、导航栏等部分)[^2]。例如: ```javascript const res = uni.getSystemInfoSync(); console.log('应用窗口高度:', res.windowHeight); ``` 如果需要更精确地控制页面内容的高度,比如适配导航栏或 TabBar 的高度,可以使用 `uni.getMenuButtonBoundingClientRect()` 方法获取右上角菜单按钮(胶囊按钮)的位置信息,从而计算出导航栏的高度: ```javascript const menuButtonInfo = uni.getMenuButtonBoundingClientRect(); console.log('胶囊按钮顶部位置:', menuButtonInfo.top); console.log('胶囊按钮高度:', menuButtonInfo.height); ``` 在某些情况下,可能还需要考虑状态栏的高度,可以通过 `statusBarHeight` 属性获取[^2]。结合这些信息,可以实现更加精细的页面布局和高度计算。 此外,在进行页面滚动或容器高度设置时,可以使用 `scroll-view` 组件,并通过动态设置样式来适配不同的设备高度。 ### 动态设置应用窗口高度 虽然 UniApp 提供的 API 主要是获取系统信息,但通过获取到的 `windowHeight`,可以动态设置页面元素的高度。例如,在 Vue 的 `data` 中定义一个变量来存储窗口高度,并在页面加载时更新它: ```javascript export default { data() { return { windowHeight: 0 }; }, onLoad() { const res = uni.getSystemInfoSync(); this.windowHeight = res.windowHeight; } }; ``` 然后在模板中使用这个变量来设置某个容器的高度: ```html <view :style="{ height: windowHeight + 'px' }"> <!-- 页面内容 --> </view> ``` 这种方式可以确保页面内容在不同设备上都能正确显示。 ### 注意事项 - 在使用 `uni.getSystemInfoSync()` 时,建议使用 `try...catch` 来捕获可能的异常[^4]。 - 不同平台(如 H5、小程序、App)可能会有不同的表现,因此在开发过程中需要进行多平台测试。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值