当前位置: 首页 > 知识库问答 >
问题:

苹果手机6s加的字体大小

敖和韵
2023-03-14

当我在XCode/Simulators和旧iPad设备上测试我的第一个iOs/React原生应用程序时,该应用程序看起来不错,大小都很好。但在新的iPhone 6s plus设备上,一切都超级小,文本、边距、填充都比它们应该有的少两倍。是响应性问题吗?我应该使用PixelRatio API来解决所有问题吗?我将应用程序移植到Android上后,它还能正常工作吗?这是否意味着现在我所有的风格都需要这样写:

var myStyle = {
  Post: {
    width: PixelRatio.getPixelSizeForLayoutSize(200),
    margin: PixelRatio.getPixelSizeForLayoutSize(100),
  }
}

而不仅仅是:

var myStyle = {
  Post: {
    width: 200,
    margin: 100,
  }
}

?

共有1个答案

赵佐
2023-03-14

简短的回答是肯定的,你必须考虑到你所有字体的响应能力。我用了一些方法。

正如您提到的,您可以使用getPixelSizeForLayoutSizegetPixelSizeForLayoutSize基本上看起来像这样:

static getPixelSizeForLayoutSize(layoutSize: number): number {
    return Math.round(layoutSize * PixelRatio.get());
}

这样做的问题是,像素拉提欧将返回以下值:

   * PixelRatio.get() === 1
   *     - mdpi Android devices (160 dpi)
   *   - PixelRatio.get() === 1.5
   *     - hdpi Android devices (240 dpi)
   *   - PixelRatio.get() === 2
   *     - iPhone 4, 4S
   *     - iPhone 5, 5c, 5s
   *     - iPhone 6
   *     - xhdpi Android devices (320 dpi)
   *   - PixelRatio.get() === 3
   *     - iPhone 6 plus
   *     - xxhdpi Android devices (480 dpi)
   *   - PixelRatio.get() === 3.5
   *     - Nexus 6

这基本上意味着它会在iPhone6上返回数字*2,在iPhone6 Plus上返回数字*3,这通常不能完全正确缩放,因为iPhone6Plus的字体大小最终会太大。iPhone6和iPhone4也会得到同样的处理,这不是最佳的。

我们所做的是编写一个帮助函数来计算设备的高度并返回大小。

虽然这个确切的实现可能不是你想要的,但以下一些变体可能会为你解决这个问题,因为它对我们一样:

var React = require('react-native')
var {
  Dimensions
} = React

var deviceHeight = Dimensions.get('window').height;

export default (size) => {
    if(deviceHeight === 568) {
        return size
    } else if(deviceHeight === 667) {
        return size * 1.2
    } else if(deviceHeight === 736) {
        return size * 1.4
    }
    return size
}

然后像这样使用它:

var normalize = require('./pathtohelper')

fontSize: normalize(14),
borderWidth: normalize(1)

这是另一种方式,更接近于< code > getpizelrerationforlayoutsize 的原始实现。唯一的问题是,iPhone6和iPhone4仍然返回相同的值,因此它的准确性稍差,但比原生的< code > getpizelrerationforlayoutsize 要好:

var React = require('react-native')
var {
  PixelRatio
} = React

var pixelRatio = PixelRatio.get()

export default (size) => {
    if(pixelRatio == 2) {
        return size
    } 
    return size * 1.15
}

然后像这样使用它:

var normalize = require('./pathtohelper')

fontSize: normalize(14),
borderWidth: normalize(1)
 类似资料:
  • 本文向大家介绍Unity实现苹果手机Taptic震动,包括了Unity实现苹果手机Taptic震动的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Unity苹果手机Taptic震动的具体代码,供大家参考,具体内容如下 文件:ios震动.zip 将上方文件解压之后将MultiHaptic.mm的文件放到Assets/Plugins/iOS目录下,MultiHaptic.cs文件不用挂载

  • 我在用jmeter记录我的https流量时遇到问题,并且总是收到此错误消息。不过,我在记录常规流量方面没有任何麻烦。 响应代码:非HTTP响应代码:javax.net.ssl.SSLHandshakeException响应消息:非HTTP响应消息:java.security.cert.CertificateException:没有可用的X509TrustManager实现 到目前为止,我为克服这个

  • 我是一名php开发人员。我正在为iPhone实现推送通知模块。为此,我使用php进行服务器端实现。虽然我收到“已连接到APNS {”aps“:{”警报“:”嗨推送“,”徽章“:1,”声音“:”默认“}}消息已成功发送”消息,但iPhone没有收到任何通知。我的 php 代码是这样的: ? 目标c代码是这样的:

  • 嘿,伙计们,我使用 根据屏幕宽度大小调整我的字体。像这样使用.... 它在iPhone和android设备上看起来不错,比如5.5英寸的设备,但在我的Galaxy s9上看起来很糟糕。我想根据屏幕设置我的字体,它可以自行调整..我该怎么做

  • 本文向大家介绍去除IOS苹果手机自带按钮样式的方法(推荐),包括了去除IOS苹果手机自带按钮样式的方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 如下所示: 添加到css格式的文件中! 以上这篇去除IOS苹果手机自带按钮样式的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 苹果的Vision Pro浏览网页用手势操作(比如点击,输入等),这些网页需要额外做什么适配吗 在网站上看别人使用,发现可以直接用手势点击,有些好奇