美文网首页
RN设计稿适配不同尺寸

RN设计稿适配不同尺寸

作者: JamesSawyer | 来源:发表于2018-10-24 17:34 被阅读85次
// helper.js
// https://github.com/lizhuoyuan/ReactNativeScreenUtil/blob/master/ScreenUtil.js
/**
 * zhuoyuan93@gmail.com
 * 屏幕工具类 以及一些常用的工具类封装
 * ui设计基准,iphone 6 2倍图
 * width:750px
 * height:1334px
 * @2x
 */
import { PixelRatio, Dimensions, Platform } from 'react-native'
const { width: screenW, height: screenH } = Dimensions.get('window');

const fontScale = PixelRatio.getFontScale();

const pixelRatio = PixelRatio.get();

const DEFAULT_DENSITY = 2; // 像素密度

//px转换成dp
//以iphone6为基准,如果以其他尺寸为基准的话,请修改下面的defaultWidth和defaultHeight为对应尺寸即可. 以下为1倍图时
const defaultWidth = 375;
const defaultHeight = 667;
const w2 = defaultWidth / DEFAULT_DENSITY;
const h2 = defaultHeight / DEFAULT_DENSITY;

// 缩放比例
const _scaleWidth = screenW / defaultWidth;
const _scaleHeight = screenH / defaultHeight;

// iPhoneX
const X_WIDTH = 375;
const X_HEIGHT = 812;

/**
 * 屏幕适配,缩放size , 默认根据宽度适配,纵向也可以使用此方法
 * 横向的尺寸直接使用此方法
 * 如:width ,paddingHorizontal ,paddingLeft ,paddingRight ,marginHorizontal ,marginLeft ,marginRight
 * @param size 设计图的尺寸
 * @returns {number}
 */
//  原名是 scaleSize 太长了
// sh  =》 scaleHorizontal
export function sh(size) {
  return size * _scaleWidth;
}

/**
 * 屏幕适配 , 纵向的尺寸使用此方法应该会更趋近于设计稿
 * 如:height ,paddingVertical ,paddingTop ,paddingBottom ,marginVertical ,marginTop ,marginBottom
 * @param size 设计图的尺寸
 * @returns {number}
 */
//  原名是 scaleHeight 太长了
// sv  =》 scaleVertical
export function sv(size) {
  return size * _scaleHeight;
}

//  原名是 scaleSpText 太长了
// st  =》 scaleText
export function st(size, allowFontScaling = false) {
  const scale = Math.min(_scaleWidth, _scaleHeight);
  const fontSize = allowFontScaling ? 1 : fontScale;
  return size * scale / fontSize;
}

/**
 * 判断是否为iphoneX
 * @returns {boolean}
 */
export function isIphoneX() {
  return (
      Platform.OS === 'ios' &&
      ((screenH === X_HEIGHT && screenW === X_WIDTH) ||
          (screenH === X_WIDTH && screenW === X_HEIGHT))
  )
}

/**
* 根据是否是iPhoneX返回不同的样式
* @param iphoneXStyle
* @param iosStyle
* @param androidStyle
* @returns {*}
*/
export function ifIphoneX(iphoneXStyle, iosStyle = {}, androidStyle) {
  if (isIphoneX()) {
      return iphoneXStyle;
  } else if (Platform.OS === 'ios') {
      return iosStyle
  } else {
      if (androidStyle) return androidStyle;
      return iosStyle
  }
}

相关文章

  • RN设计稿适配不同尺寸

    ScreenUtil工具 - 作者是lizhuoyuan最新版的iPhone XR, XS, XR MAX 需要进...

  • vue 移动端适配

    vue适配:以750设计稿为基准,在不同屏幕尺寸下如何适配 Safari中设置了禁止用户缩放无效的问题: iOS ...

  • 1rem为何不能为1px

    在使用rem做适配时,大多设定在设计稿尺寸时,1rem=100px。这样在做开发时,css尺寸属性写为(设计稿尺寸...

  • PC端页面适配

    pc端的适配需求:目前我们pc项目的设计稿尺寸是宽度1920,高度最小是1080。 适配目标:1.在不同分辨率的电...

  • rem适配布局

    简介 使用rem+以下函数+设计稿的尺寸就可以适配页面。

  • px2rem 移动端自适应方案

    一套设计稿如何适配不同移动端设备? 开发 WebApp 时,我们通常只会从设计师那边拿到一个尺寸的项目设计图,比如...

  • 屏幕适配的一些概念01

    设计尺寸规范-表格 设计尺寸规范-图文 设计尺寸规范-开发尺寸 也可以看看 屏幕适配的一些概念02 手机适配浏览,...

  • IOS界面设计尺寸标准规范

    很多IOS APP UI设计稿都是以iphone6为基准的,方便向上适配iphone7的尺寸,也方便向下适配iph...

  • VUE移动端和PC端适配方案总结

    移动端和PC端适配采用的方案,之前做大屏的时候设计稿是以1920*1080的尺寸设计的,考虑到市面上的显示其尺寸包...

  • 设计篇-app设计(二)

    1,设计: 1)一般以640*1136(72ppi)作为设计稿,按着设计尺寸后续标注、切图资源可以适配到iPhon...

网友评论

      本文标题:RN设计稿适配不同尺寸

      本文链接:https://www.haomeiwen.com/subject/ippxtqtx.html