/** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import #import #import #import NS_ASSUME_NONNULL_BEGIN /** * Represents a `UIView` instance managed by React. * All methods are non-@optional. * `UIView+ComponentViewProtocol` category provides default implementation * for all of them. */ @protocol RCTComponentViewProtocol /* * Called for mounting (attaching) a child component view inside `self` * component view. * Receiver must add `childComponentView` as a subview. */ - (void)mountChildComponentView:(UIView *)childComponentView index:(NSInteger)index; /* * Called for unmounting (detaching) a child component view from `self` * component view. * Receiver must remove `childComponentView` as a subview. */ - (void)unmountChildComponentView:(UIView *)childComponentView index:(NSInteger)index; /* * Called for updating component's props. * Receiver must update native view props accordingly changed props. */ - (void)updateProps:(facebook::react::SharedProps)props oldProps:(facebook::react::SharedProps)oldProps; /* * Called for updating component's layout metrics. * Receiver must update `UIView` layout-related fields (such as `frame`, * `bounds`, `layer.zPosition`, and so on) accordingly. */ - (void)updateLayoutMetrics:(facebook::react::LayoutMetrics)layoutMetrics oldLayoutMetrics:(facebook::react::LayoutMetrics)oldLayoutMetrics; /* * Called right after the component view is moved to a recycle pool. * Receiver must reset any local state and release associated * non-reusable resources. */ - (void)prepareForRecycle; @end NS_ASSUME_NONNULL_END