TextRadius.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import { Text, View } from 'react-native';
  3. const getRadius = (style) => {
  4. let s = undefined;
  5. if (Array.isArray(style)) {
  6. let res = {}
  7. for (let s of style) {
  8. res = {...res, ...s};
  9. }
  10. s = res;
  11. } else {
  12. s = style
  13. }
  14. var view = {}, text = {}
  15. for (let name in s) {
  16. if (name.indexOf('margin') >= 0) {
  17. view[name] = s[name];
  18. continue;
  19. }
  20. if (name.indexOf('padding') >= 0) {
  21. text[name] = s[name];
  22. continue;
  23. }
  24. if (name.indexOf('color') == 0) {
  25. text[name] = s[name];
  26. continue;
  27. }
  28. if (name.indexOf('font') >= 0) {
  29. text[name] = s[name];
  30. continue;
  31. }
  32. if (name.indexOf('border') >= 0) {
  33. view[name] = s[name];
  34. continue;
  35. } else if (name.indexOf('Radius') >= 0) {
  36. view[name] = s[name];
  37. continue;
  38. }
  39. if (name.indexOf('background') >= 0) {
  40. view[name] = s[name];
  41. continue;
  42. }
  43. if (name.indexOf('text') >= 0) {
  44. text[name] = s[name];
  45. continue;
  46. }
  47. if (name.indexOf('position') >= 0) {
  48. view[name] = s[name];
  49. continue;
  50. } else {
  51. view[name] = s[name];
  52. }
  53. }
  54. return {
  55. view: view,
  56. text: text
  57. }
  58. }
  59. const TextRadius = ({style, onPress, children}) => {
  60. if (isIOS) {
  61. const styles = getRadius(style);
  62. return (
  63. <View style={styles.view}>
  64. <Text style={styles.text} onPress={onPress}>{children}</Text>
  65. </View>
  66. );
  67. } else {
  68. return <Text style={style} onPress={onPress}>{children}</Text>;
  69. }
  70. };
  71. export default TextRadius;