ios - 为什么具有相同像素比的手机上 2 个元素的高度不同?
问题描述
我正在创建一个 react-native 应用程序,但我很困惑手机之间的点值有何不同。我已经确认 iPhone 8 和 iPhone 11 的像素密度均为 2 (Apple 的设备屏幕尺寸和像素密度列表),并且 Expo 期望相同。(世博会 PixelRatio 文档)
但是,如果我创建一个 View 元素并在 iPhone 8 和 iPhone 11 上将其高度设为 400,它们的尺寸显然不同。为什么会这样?
代码示例如下:
import React from 'react';
import {View, PixelRatio} from 'react-native';
import { SafeAreaView } from 'react-native-safe-area-context';
const TestComponent = () => {
console.log('Device.modelName is: ', Device.modelName, 'Pixel ratio.get is: ', PixelRatio.get(), 'getPixelSizeForLayoutSize(400)', PixelRatio.getPixelSizeForLayoutSize(400), 'getFontScale', PixelRatio.getFontScale());
return (
<SafeAreaView>
<View style={{backgroundColor: 'blue', height: 400}}></View>
</SafeAreaView>
}
)
正如预期的那样,我的控制台正在记录:
Device.modelName is: iPhone 8 Pixel ratio.get is: 2 getPixelSizeForLayoutSize(400) 800 getFontScale 1
Device.modelName 为:iPhone 11 Pixel ratio.get 为:2 getPixelSizeForLayoutSize(400) 800 getFontScale 1
但 iPhone 8 上的元素显然更高
解决方案
当我选择每部手机并单击窗口-> 物理尺寸时,每部手机上元素的高度都相同。
我不确定为什么它以前不起作用。可能影响像素比率的默认设置有些奇怪,或者我做了一个我不记得的更改。
推荐阅读
- looker - Looker:仅在仪表板窗口可见时运行查询
- jmeter - Jmeter 不返回与 Postman 相同的 json 响应
- angular - “模板”上的角度检查字符串模式
- vue.js - 覆盖 vuetify 中的 scss 变量
- java - 将 Windows 上的 Java 调用 API 与 CMAKE 链接
- html - Bootstrap 3 - 数据容器更改工具提示自定义 css
- python - 如何使用键盘快捷键在jupyter笔记本中向上/向下移动行(不是单元格)?
- qt - 行布局内的 QML 发光
- windows - 柯南无法再次链接已安装的库,因为它的名称与所需的字母大小不同
- python - pd.to_datetime 创建小时自动添加非真实日期