2016-12-18 8 views
0

Я использую реакцию native и эту библиотеку, чтобы сделать снимок экрана над камерой: https://github.com/gre/react-native-view-shot.отредактируйте собственный такой же снимок в кадре камеры

Мой проект скомпилирован правильно, и я могу нажать на кнопку «сделать снимок экрана», которая вернет uri временного пути к файлу.

2016-12-17 20:02:50.049 [info][tid:com.facebook.react.JavaScript] 
    'Image saved to ', '/private/var/mobile/Containers/Data/Application/C46841FC-C985-4396-A8DE-9A8C3CD7A9B8/tmp/ReactNative/C06F2B55-C390-495C-A4C5-63988C1CD374.jpg' 

Однако, когда я пытаюсь сохранить изображение в рулон камеры, я получаю следующее сообщение об ошибке:

[info][tid:com.facebook.react.JavaScript] 
    'error save: ', [TypeError: undefined is not an object (evaluating 'RCTCameraRollManager.saveToCameraRoll') 

моя установка выглядит примерно так:

import React, { Component } from 'react'; 
import {takeSnapshot} from 'react-native-view-shot'; 
import { 
    CameraRoll, 
    Text, 
    View 
} from 'react-native'; 
import Camera from 'react-native-camera'; 

export default class CameraView extends Component { 
    constructor() { 
     this.camera = null; 
    } 
    setCamera(ref) { 
     this.camera = ref; 
    } 
    capture() { 
     takeSnapshot(this.camera, {format, quality}) 
      .then(
       uri => { 
        console.log("Image saved to ", file); 
        CameraRoll.saveToCameraRoll(uri, 'photo'); 
       } 
      ) 
      .catch(error => console.log('error save: ', error)); 
    } 
    render() { 
     return (
      <View> 
       <Camera ref={ref => this.setCamera(ref)}> 
        <Text onPress={() => this.capture()}> 
         take screenshot 
        </Text> 
       </Camera> 
      </View> 
     ); 
    } 

Когда я удаленно отлаживать ошибку js в браузере, я получаю следующую ошибку:

TypeError: Cannot read property 'saveToCameraRoll' of undefined 
    at Function.saveToCameraRoll (CameraRoll.js:159) 
    at CameraView.js:71 
    at tryCallOne (core.js:37) 
    at core.js:123 
    at JSTimers.js:100 
    at Object.callTimer (JSTimersExecution.js:95) 
    at Object.callImmediatesPass (JSTimersExecution.js:199) 
    at Object.callImmediates (JSTimersExecution.js:214) 
    at MessageQueue.js:214 
    at guard (MessageQueue.js:46) 

кажется, что я связал соответствующие библиотеки, необходимые для IOS, но я все еще получаю ошибку выше:

xcode

Почему бы CameraRoll быть определено в этой ситуации?

ответ

0

У меня фактически не было правильно подключено двоичное устройство libRCTCameraRoll.a. Как только я это сделал, эта ошибка прекратилась.