2016-11-28 2 views
0

Pour un projet simple qui sera déployé sur des périphériques spécifiques, je me demande s'il est possible de spécifier des mesures en utilisant des pixels natifs, ignorant ainsi le dpi de l'appareil (par exemple instance, remplacé par l'utilisateur dans Windows au niveau du système).Taille des pixels natifs (comment ignorer le ratio de pixels)

Actuellement, la seule solution semble diviser n'importe quelle valeur pour le rapport de pixel.

Existe-t-il un moyen plus simple donc plus maniable?

+0

Autre option multiplie chaque valeur pour StyleSheet.hairlineWidth – Nuthinking

Répondre

1

React Native est livré avec un module PixelRatio qui a une méthode appelée get. Vous devez diviser manuellement toutes vos mesures par le ratio de pixels.

  1. Commencez avec le nombre de pixels physiques.
  2. Divisez-le par le nombre de pixels (PixelRatio.get()) pour obtenir le nombre correspondant de pixels logiques.
  3. Utilisez le nombre de pixels logiques dans StyleSheet.create et d'autres méthodes liées à la mise en page. Réagissez Native et les structures d'interface utilisateur native sous-jacentes vont convertir les pixels logiques en pixels physiques.

Vous pourriez écrire une méthode d'aide pour cela si elle devenait fastidieuse. C'est une idée pour une API:

StyleSheet.create({ 
    box: { 
    width: physical(100), 
    height: physical(75), 
    }, 
}); 

La plupart du temps, vous devriez travailler avec des pixels logiques. Ce n'est que lorsque vous voulez contrôler précisément l'écran matériel ou que vous interagissez avec un système sans notion d'échelle d'écran (par exemple pour récupérer une image JPEG) que vous souhaitez utiliser avec des pixels physiques.

+0

Merci pour votre réponse, ce qui confirme mes pensées. Je me demande cependant s'il existe un moyen de pré-traiter une feuille au moment de la "compilation", de sorte que, par exemple, une valeur de "100px" puisse être convertie en "physique (100)". – Nuthinking