React Native自定义iOS视图,响应高度/宽度样式

时间:2016-05-03 22:08:06

标签: ios objective-c react-native

我试图让我的自定义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;

1 个答案:

答案 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"