相机滚动

保留所有版权。

源代码是在 BSD-style 许可下经过许可的,是在源代码树的根目录下的 LICENSE 文件里找到的。额外授予的专利权可以在同目录下的 PATENTS 文件里找到。

@flow

方法

static saveImageWithTag(tag: string, successCallback, errorCallback)

利用tag标签保存图像到相机相册。

@param {string} tag - 可以是我们所接受的三种标签中的任意一个:1、url 2、assets-library 标签 3、存储一个图像的内存中返回的标签

static getPhotos(params: object, callback: function, errorCallback: function)

利用来自设备中的本地相机相册的图片识别对象来调用 callback 函数,通过 getPhotosReturnChecker 来定义匹配类型。

@param {object} params -见 getPhotosParamChecker@param {function} callback -通过 getPhotosReturnChecker 定义自变量的类型调用成功。@param {function} errorCallback - 通过错误消息调用失败。

例子

Edit on GitHub

  1. 'use strict';
  2. var React = require('react-native');
  3. var {
  4. CameraRoll,
  5. Image,
  6. SliderIOS,
  7. StyleSheet,
  8. SwitchIOS,
  9. Text,
  10. View,
  11. } = React;
  12. var CameraRollView = require('./CameraRollView.ios');
  13. var CAMERA_ROLL_VIEW = 'camera_roll_view';
  14. var CameraRollExample = React.createClass({
  15. getInitialState() {
  16. return {
  17. groupTypes: 'SavedPhotos',
  18. sliderValue: 1,
  19. bigImages: true,
  20. };
  21. },
  22. render() {
  23. return (
  24. <View>
  25. <SwitchIOS
  26. onValueChange={this._onSwitchChange}
  27. value={this.state.bigImages} />
  28. <Text>{(this.state.bigImages ? 'Big' : 'Small') + ' Images'}</Text>
  29. <SliderIOS
  30. value={this.state.sliderValue}
  31. onValueChange={this._onSliderChange}
  32. />
  33. <Text>{'Group Type: ' + this.state.groupTypes}</Text>
  34. <CameraRollView
  35. ref={CAMERA_ROLL_VIEW}
  36. batchSize={5}
  37. groupTypes={this.state.groupTypes}
  38. renderImage={this._renderImage}
  39. />
  40. </View>
  41. );
  42. },
  43. _renderImage(asset) {
  44. var imageSize = this.state.bigImages ? 150 : 75;
  45. var imageStyle = [styles.image, {width: imageSize, height: imageSize}];
  46. var location = asset.node.location.longitude ?
  47. JSON.stringify(asset.node.location) : 'Unknown location';
  48. return (
  49. <View key={asset} style={styles.row}>
  50. <Image
  51. source={asset.node.image}
  52. style={imageStyle}
  53. />
  54. <View style={styles.info}>
  55. <Text style={styles.url}>{asset.node.image.uri}</Text>
  56. <Text>{location}</Text>
  57. <Text>{asset.node.group_name}</Text>
  58. <Text>{new Date(asset.node.timestamp).toString()}</Text>
  59. </View>
  60. </View>
  61. );
  62. },
  63. _onSliderChange(value) {
  64. var options = CameraRoll.GroupTypesOptions;
  65. var index = Math.floor(value * options.length * 0.99);
  66. var groupTypes = options[index];
  67. if (groupTypes !== this.state.groupTypes) {
  68. this.setState({groupTypes: groupTypes});
  69. }
  70. },
  71. _onSwitchChange(value) {
  72. this.refs[CAMERA_ROLL_VIEW].rendererChanged();
  73. this.setState({ bigImages: value });
  74. }
  75. });
  76. var styles = StyleSheet.create({
  77. row: {
  78. flexDirection: 'row',
  79. flex: 1,
  80. },
  81. url: {
  82. fontSize: 9,
  83. marginBottom: 14,
  84. },
  85. image: {
  86. margin: 4,
  87. },
  88. info: {
  89. flex: 1,
  90. },
  91. });
  92. exports.title = '<CameraRollView>';
  93. exports.description = 'Example component that uses CameraRoll to list user\'s photos';
  94. exports.examples = [
  95. {
  96. title: 'Photos',
  97. render(): ReactElement { return <CameraRollExample />; }
  98. }
  99. ];