我试图让我的自定义UIView响应宽度和高度样式,例如
<MyCustomView style={{width: 200, height: 300}}/>
我紧跟着https://github.com/brentvatne/react-native-dashed-border-example
的简单示例目前我的View和ViewManager看起来像:
#import "MyCustomView.h"
#import "RCTViewManager.h"
@implementation MyCustomView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Create the component view
}
return self;
}
@end
和ViewManager:
@implementation MyCustomViewManager
RCT_EXPORT_MODULE();
- (UIView *)view
{
return [[MyCustomView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
}
@end
然而,这当然总是填满屏幕。我希望能够在此组件上设置高度,理想情况下使用RN方法通过style
传递它。
如果我按照简单的边框示例,我最终会使用
@implementation MyCustomView
- (instancetype)init
{
self = [super init];
if (self) {
// Create the component view
}
return self;
}
@end
和
@implementation MyCustomViewManager
RCT_EXPORT_MODULE();
- (UIView *)view
{
return [[MyCustomView alloc] init];
}
@end
但视图未显示,报告self.bounds.size.height
为0.00。
我有没有错过让这个工作的东西?我需要雇用RCTBridge吗?我之前有过这条线
@synthesize bridge = _bridge;
,如https://github.com/brentvatne/react-native-dashed-border-example/blob/master/BVDashedBorderViewManager.m#L9,但我收到错误说&#34; Bridge未设置&#34;
答案 0 :(得分:3)
您可以在视图中覆盖reactSetFrame,只要它被React Native布局更新,您就可以访问该框架:
- (void)reactSetFrame:(CGRect)frame
{
CGFloat height = frame.size.height;
// Do something with the height here
[super reactSetFrame: frame];
}
如果您尚未使用该文件,则需要为UIView导入React类别:
#import "UIView+React.h"