[ 卡卡 DAY 31 ] - React Native 跨平台的 Shadow 处理

Shadow in React Native 原来有这门学问。
在专案中,遇到卡牌的阴影问题,以为可以使用 css3 中的 box-shadow 属性,结果发现设定後,没效果啊~!接着又发现双平台的显示竟然没有统一,所以31天接续纪录一下,就是写这篇的原因了~ :P

Platform

首先你要先知道,react native 有个很平易近人的跨平台装置判断,请看下面这篇:
[ 卡卡 DAY 8 ] - React Native 跨平台装置判断

当学会判断平台之後...,以下就知道是怎麽一回事了

import {
  StyleSheet,
  Platform
} from 'react-native';



const styles = StyleSheet.create({
  cardShadow: {
    ...Platform.select({
      ios: {
        // ios style
      },
      android: {
        // android style
      }
    })
  },
});

style 实作

iOS

    shadowColor: '#aaa',  
    // 阴影的颜色
    shadowOffset:{width:0,height:0},  
    // xy轴为基准,设定阴影的偏移,width = x轴,height = y轴
    shadowOpacity: 1,
    // 阴影的透明度
    shadowRadius: 1.5,  
    // 设置阴影晕染半径

android

    elevation:1.5,
    // 支援 android5.0 以上
    // 无法指定阴影的颜色以及偏移,只能设阴影高度,阴影效果主要在底部
    // elevation 是只有 Android-only style property 使用在 View elements

code

import {
  StyleSheet,
  Platform
} from 'react-native';

//.....code....//

const styles = StyleSheet.create({
  cardShadow: {
    ...Platform.select({
      ios: {
        shadowColor: '#aaa',  
        shadowOffset:{width:0,height:0},  
        shadowOpacity: 1,
        shadowRadius: 1.5,  
      },
      android: {
         elevation:1.5,
      }
    })
  },
});

结论

结果...你会发现,其实两个装置的样式写法根本就不一样,所以不需要做平台判断直接合并写即可。

import {
  StyleSheet
} from 'react-native';

//.....code....//

const styles = StyleSheet.create({
  cardShadow: {
    shadowColor: '#aaa',  
    shadowOffset:{width:0,height:0},  
    shadowOpacity: 1,
    shadowRadius: 1.5,  
    elevation:1.5,
  },
});

<<:  (Vue)创造组件官方教学实作

>>:  计算机概论 - 资料抽象化 data abstractions

【PHP Telegram Bot】Day16 - 基础(5):档案读取与写入、cURL

对程序来说,档案的处理与网络传输是差不多的,所以会有一些两者都通用的函式 内建函式 最主要就是这两...

软件开发团队 “有动力自主成长” 的 LOC 100K 门槛

在一般的软件公司,和面对规模的不大的专案,除非你是个对软件开发、工程品质、效率 “真的” 有兴趣,而...

Day10-旧网站重写成Vue_1_收合式选单

今天开始来把这个我第一个网站写成vue版本 https://sweetyue9045.github....

[Day 27] Bevy 游戏引擎 (Part 1)

昨天大概讲完 Rocket 的运用了 所以接下来就来介绍其他东西吧 这次要讲的是 Game Engi...

[Day 7] Controller

使用php artisan route:list在终端机执行,会得到现在sever中有哪些路由。 产...