react-native-camera 在通过导航器打开 2 次时冻结应用程序
Posted
技术标签:
【中文标题】react-native-camera 在通过导航器打开 2 次时冻结应用程序【英文标题】:react-native-camera freezes app when opened 2 times via navigator 【发布时间】:2015-10-09 19:48:20 【问题描述】:我在一个简单的<Navigator />
组件中包含的视图中使用https://github.com/lwansbrough/react-native-camera 库。
在您导航回主页视图并尝试使用<Camera />
重新加载视图之前,一切都按预期进行。控制台或 Xcode 中没有错误消息,这使得很难查明问题。
当我删除整个 <Camera />
组件时,导航按预期工作并且视图重新加载正常。
目前在 github https://github.com/lwansbrough/react-native-camera/issues/80 上有一个未解决的问题,但由于时间紧迫,我想知道是否有其他人找到了解决此问题的方法并可以分享解决方法。
标准渲染方法:
render()
return (
<View style=styles.outer>
<Overlay
modalVisible=this.state.modalVisible
/>
<Camera
ref="cam"
style=styles.container
captureTarget=Camera.constants.CaptureTarget.disk
type=this.state.cameraType>
<TouchableHighlight style=styles.circlebutton onPress=this._takePicture>
<Text>Take Picture</Text>
</TouchableHighlight>
</Camera>
<Image
source=uri: this.state.imageURI, isStatic:true
style=width: this.state.imageURI ? 100 : 0, height: this.state.imageURI ? 100 : 0, opacity: this.state.imageURI ? 1 : 0
/>
</View>
);
【问题讨论】:
【参考方案1】:试试这个:
在 Xcode 上,转到 RCTCamera.xcodeproj
(这是 react 原生库之一)
在RCTCameraManager.h
添加属性
@property (nonatomic, strong) RCTCamera *camera;
在RCTCameraManager.m
- (UIView *)view
return [[RCTCamera alloc] initWithManager:self bridge:self.bridge];
替换为:
- (UIView *)view
if(!self.camera)
self.camera = [[RCTCamera alloc] initWithManager:self bridge:self.bridge];
return self.camera;
return self.camera;
希望对你有帮助。
【讨论】:
先生,您是个天才和学者。我很幸运能和你在同一个半球工作。它奏效了。以上是关于react-native-camera 在通过导航器打开 2 次时冻结应用程序的主要内容,如果未能解决你的问题,请参考以下文章
react-native-camera 条形码扫描仪冻结,因为它扫描速度太快
如何使用带有 react-native-camera 的默认 iOS 相机控件
React Native - 使用库 react-native-camera 调用摄像头扫描二维码以及条形码