mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-23 20:01:01 +08:00
Migrate DeviceInfoModule from RN Module to Native Function.
Reviewed By: danzimm Differential Revision: D6750934 fbshipit-source-id: f453801737e41632c6b84ff894e7f0eb66b575dc
This commit is contained in:
committed by
Facebook Github Bot
parent
6224ef5301
commit
429fcc8cab
37
React/UIUtils/RCTUIUtils.h
Normal file
37
React/UIUtils/RCTUIUtils.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Get window and screen dimensions
|
||||
typedef struct {
|
||||
struct {
|
||||
CGFloat width, height, scale, fontScale;
|
||||
} window, screen;
|
||||
} RCTDimensions;
|
||||
extern __attribute__((visibility("default")))
|
||||
RCTDimensions RCTGetDimensions(CGFloat fontScale);
|
||||
|
||||
// Get font size multiplier for font base size (Large) by content size category
|
||||
extern __attribute__((visibility("default")))
|
||||
CGFloat RCTGetMultiplierForContentSizeCategory(UIContentSizeCategory category);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
52
React/UIUtils/RCTUIUtils.m
Normal file
52
React/UIUtils/RCTUIUtils.m
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import "RCTUIUtils.h"
|
||||
|
||||
RCTDimensions RCTGetDimensions(CGFloat fontScale)
|
||||
{
|
||||
UIScreen *mainScreen = UIScreen.mainScreen;
|
||||
CGSize screenSize = mainScreen.bounds.size;
|
||||
RCTDimensions result;
|
||||
typeof (result.window) dims = {
|
||||
.width = screenSize.width,
|
||||
.height = screenSize.height,
|
||||
.scale = mainScreen.scale,
|
||||
.fontScale = fontScale
|
||||
};
|
||||
result.window = dims;
|
||||
result.screen = dims;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
CGFloat RCTGetMultiplierForContentSizeCategory(UIContentSizeCategory category)
|
||||
{
|
||||
static NSDictionary<NSString *, NSNumber *> *multipliers = nil;
|
||||
static dispatch_once_t token;
|
||||
dispatch_once(&token, ^{
|
||||
multipliers = @{
|
||||
UIContentSizeCategoryExtraSmall: @0.823,
|
||||
UIContentSizeCategorySmall: @0.882,
|
||||
UIContentSizeCategoryMedium: @0.941,
|
||||
UIContentSizeCategoryLarge: @1.0,
|
||||
UIContentSizeCategoryExtraLarge: @1.118,
|
||||
UIContentSizeCategoryExtraExtraLarge: @1.235,
|
||||
UIContentSizeCategoryExtraExtraExtraLarge: @1.353,
|
||||
UIContentSizeCategoryAccessibilityMedium: @1.786,
|
||||
UIContentSizeCategoryAccessibilityLarge: @2.143,
|
||||
UIContentSizeCategoryAccessibilityExtraLarge: @2.643,
|
||||
UIContentSizeCategoryAccessibilityExtraExtraLarge: @3.143,
|
||||
UIContentSizeCategoryAccessibilityExtraExtraExtraLarge: @3.571
|
||||
};
|
||||
});
|
||||
|
||||
double value = multipliers[category].doubleValue;
|
||||
return value > 0.0 ? value : 1.0;
|
||||
}
|
||||
Reference in New Issue
Block a user