当我在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,
}
}
?
简短的回答是肯定的,你必须考虑到你所有字体的响应能力。我用了一些方法。
正如您提到的,您可以使用getPixelSizeForLayoutSize
。getPixelSizeForLayoutSize
基本上看起来像这样:
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浏览网页用手势操作(比如点击,输入等),这些网页需要额外做什么适配吗 在网站上看别人使用,发现可以直接用手势点击,有些好奇