/
githubmr
/
facebook-react-native
Обзор
Документация
Войти
/
githubmr
/
facebook-react-native
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-native/React/Views/RCTShadowView+Layout.m
72 строки
2 KB
Ruslan Lesiutin
| RN Monorepo | Migrate to package (#36434)
17 мар 2023, 15:03
17 мар 2023, 15:03
714b502
Код
Авторство
О чём код?
/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import "RCTShadowView+Layout.h" #import <yoga/Yoga.h> #import "RCTAssert.h" @implementation RCTShadowView (Layout) #pragma mark - Computed Layout-Inferred Metrics - (UIEdgeInsets)paddingAsInsets { YGNodeRef yogaNode = self.yogaNode; return (UIEdgeInsets){ RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeTop)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeLeft)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeBottom)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetPadding(yogaNode, YGEdgeRight))}; } - (UIEdgeInsets)borderAsInsets { YGNodeRef yogaNode = self.yogaNode; return (UIEdgeInsets){ RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeTop)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeLeft)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeBottom)), RCTCoreGraphicsFloatFromYogaFloat(YGNodeLayoutGetBorder(yogaNode, YGEdgeRight))}; } - (UIEdgeInsets)compoundInsets { UIEdgeInsets borderAsInsets = self.borderAsInsets; UIEdgeInsets paddingAsInsets = self.paddingAsInsets; return (UIEdgeInsets){ borderAsInsets.top + paddingAsInsets.top, borderAsInsets.left + paddingAsInsets.left, borderAsInsets.bottom + paddingAsInsets.bottom, borderAsInsets.right + paddingAsInsets.right}; } - (CGSize)availableSize { return self.layoutMetrics.contentFrame.size; } - (CGRect)contentFrame { return self.layoutMetrics.contentFrame; } #pragma mark - Dirty Propagation Control - (void)dirtyLayout { // The default implementation does nothing. } - (void)clearLayout { // The default implementation does nothing. } @end