我为 react-native (v0.61.5) 应用程序创建了一个原生 iOS 模块。它所做的只是返回原生的 RPBroadcastPickerView。我期望显示选择器视图,但在我的测试中只显示一个空白的白色屏幕。
这是本机模块的样子:
#import <ReplayKit/ReplayKit.h>
#import <React/RCTViewManager.h>
@interface BroadcastPickerManager : RCTViewManager
@end
@implementation BroadcastPickerManager
RCT_EXPORT_MODULE(BroadcastPicker)
- (UIView *)view
{
return [[RPSystemBroadcastPickerView alloc] init];
}
@end
这是它在 RN 中的样子
BroadcastPickerView.js:
import { requireNativeComponent, View } from 'react-native'
module.exports = requireNativeComponent('BroadcastPicker')
测试屏幕.js:
class TestScreen extends React.Component {
constructor(props) {
super(props)
}
render() {
return (
<View style={{flex: 1, backgroundColor: 'red'}}>
<BroadcastPickerView style={{ height: 200, width: 200, backgroundColor: 'blue'}} />
</View>
)
}
}
编辑:我尝试在本机代码中设置框架,以及在 javascript 中设置宽度/高度。设置本机代码没有影响。在 javascript 中设置高度/宽度以我选择的背景颜色显示视图。不完全确定我期望发生什么,但我猜 RPBroadcastPickerView 不是黑色的空视图。
在这里找到的关于本机模块开发的 React 本机文档是这样说的:
注意:不要尝试在您通过 -view 方法公开的 UIView 实例上设置 frame 或 backgroundColor 属性。React Native 将覆盖您的自定义类设置的值,以匹配您的 JavaScript 组件的布局道具。如果您需要这种控制粒度,最好将要设置样式的 UIView 实例包装在另一个 UIView 中,然后返回包装器 UIView。有关详细信息,请参阅问题 2948。
不确定我是否只是遗漏了一些东西,但是当导航到这个屏幕时什么都没有呈现。有什么建议么?