1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #import "RCTSurfaceView.h"
- #import "RCTSurfaceView+Internal.h"
- #import "RCTDefines.h"
- #import "RCTSurface.h"
- #import "RCTSurfaceRootView.h"
- @implementation RCTSurfaceView {
- RCTSurfaceRootView *_Nullable _rootView;
- RCTSurfaceStage _stage;
- }
- RCT_NOT_IMPLEMENTED(-(instancetype)init)
- RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
- RCT_NOT_IMPLEMENTED(-(nullable instancetype)initWithCoder : (NSCoder *)coder)
- - (instancetype)initWithSurface:(RCTSurface *)surface
- {
- if (self = [super initWithFrame:CGRectZero]) {
- _stage = surface.stage;
- _surface = surface;
- }
- return self;
- }
- #pragma mark - Internal Interface
- - (void)setRootView:(RCTSurfaceRootView *)rootView
- {
- if (_rootView == rootView) {
- return;
- }
- [_rootView removeFromSuperview];
- _rootView = rootView;
- [self _updateStage];
- }
- - (RCTSurfaceRootView *)rootView
- {
- return _rootView;
- }
- #pragma mark - stage
- - (void)setStage:(RCTSurfaceStage)stage
- {
- if (stage == _stage) {
- return;
- }
- _stage = stage;
- [self _updateStage];
- }
- - (RCTSurfaceStage)stage
- {
- return _stage;
- }
- #pragma mark - Private
- - (void)_updateStage
- {
- if (RCTSurfaceStageIsRunning(_stage)) {
- if (_rootView.superview != self) {
- [self addSubview:_rootView];
- }
- } else {
- [_rootView removeFromSuperview];
- }
- }
- @end
|