相机滚动

保留所有版权。

源代码是在 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. ];