#import "RNNCustomTitleView.h" @interface RNNCustomTitleView () @property (nonatomic, strong) RCTRootView *subView; @property (nonatomic, strong) NSString *alignment; @end @implementation RNNCustomTitleView - (instancetype)initWithFrame:(CGRect)frame subView:(RCTRootView*)subView alignment:(NSString*)alignment { self = [super init]; if (self) { self.subView = subView; self.alignment = alignment; self.backgroundColor = [UIColor clearColor]; self.subView.backgroundColor = [UIColor clearColor]; if ([alignment isEqualToString:@"fill"]) { self.frame = frame; subView.sizeFlexibility = RCTRootViewSizeFlexibilityNone; } else { self.subView.delegate = self; subView.sizeFlexibility = RCTRootViewSizeFlexibilityWidthAndHeight; } [self addSubview:subView]; } return self; } - (CGSize)sizeThatFits:(CGSize)size { if ([self.alignment isEqualToString:@"fill"]) { return size; } return [super sizeThatFits:size]; } - (void)layoutSubviews { [super layoutSubviews]; if ([self.alignment isEqualToString:@"fill"]) { [self.subView setFrame:self.frame]; } } - (NSString *)alignment { return _alignment ? _alignment : @"center"; } - (void)rootViewDidChangeIntrinsicSize:(RCTRootView *)rootView { if ([self.alignment isEqualToString:@"center"]) { [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.subView.intrinsicContentSize.width, self.subView.intrinsicContentSize.height)]; [self.subView setFrame:CGRectMake(0, 0, rootView.intrinsicContentSize.width, rootView.intrinsicContentSize.height)]; } } @end