mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-03-27 22:54:46 +08:00
Add <Text> shadow support
Summary: Add three new TextStylePropTypes for \<Text> - textShadowOffset - textShadowRadius - textShadowColor Closes https://github.com/facebook/react-native/pull/4975 Reviewed By: svcscm Differential Revision: D2796278 Pulled By: nicklockwood fb-gh-sync-id: f8c3fa210e664428b029b9fba8eca4a8eb81c08d
This commit is contained in:
committed by
facebook-github-bot-9
parent
718cd7953f
commit
4972cabaa5
@@ -33,6 +33,9 @@ extern NSString *const RCTReactTagAttributeName;
|
||||
@property (nonatomic, assign) CGFloat fontSizeMultiplier;
|
||||
@property (nonatomic, assign) BOOL allowFontScaling;
|
||||
@property (nonatomic, assign) CGFloat opacity;
|
||||
@property (nonatomic, assign) CGSize textShadowOffset;
|
||||
@property (nonatomic, assign) CGFloat textShadowRadius;
|
||||
@property (nonatomic, strong) UIColor *textShadowColor;
|
||||
|
||||
- (void)recomputeText;
|
||||
|
||||
|
||||
@@ -305,22 +305,31 @@ static css_dim_t RCTMeasure(void *context, float width, float height)
|
||||
}
|
||||
|
||||
// Text decoration
|
||||
if(_textDecorationLine == RCTTextDecorationLineTypeUnderline ||
|
||||
_textDecorationLine == RCTTextDecorationLineTypeUnderlineStrikethrough) {
|
||||
if (_textDecorationLine == RCTTextDecorationLineTypeUnderline ||
|
||||
_textDecorationLine == RCTTextDecorationLineTypeUnderlineStrikethrough) {
|
||||
[self _addAttribute:NSUnderlineStyleAttributeName withValue:@(_textDecorationStyle)
|
||||
toAttributedString:attributedString];
|
||||
}
|
||||
if(_textDecorationLine == RCTTextDecorationLineTypeStrikethrough ||
|
||||
_textDecorationLine == RCTTextDecorationLineTypeUnderlineStrikethrough){
|
||||
if (_textDecorationLine == RCTTextDecorationLineTypeStrikethrough ||
|
||||
_textDecorationLine == RCTTextDecorationLineTypeUnderlineStrikethrough){
|
||||
[self _addAttribute:NSStrikethroughStyleAttributeName withValue:@(_textDecorationStyle)
|
||||
toAttributedString:attributedString];
|
||||
}
|
||||
if(_textDecorationColor) {
|
||||
if (_textDecorationColor) {
|
||||
[self _addAttribute:NSStrikethroughColorAttributeName withValue:_textDecorationColor
|
||||
toAttributedString:attributedString];
|
||||
[self _addAttribute:NSUnderlineColorAttributeName withValue:_textDecorationColor
|
||||
toAttributedString:attributedString];
|
||||
}
|
||||
|
||||
// Text shadow
|
||||
if (!CGSizeEqualToSize(_textShadowOffset, CGSizeZero)) {
|
||||
NSShadow *shadow = [NSShadow new];
|
||||
shadow.shadowOffset = _textShadowOffset;
|
||||
shadow.shadowBlurRadius = _textShadowRadius;
|
||||
shadow.shadowColor = _textShadowColor;
|
||||
[self _addAttribute:NSShadowAttributeName withValue:shadow toAttributedString:attributedString];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)fillCSSNode:(css_node_t *)node
|
||||
@@ -371,6 +380,9 @@ RCT_TEXT_PROPERTY(TextDecorationLine, _textDecorationLine, RCTTextDecorationLine
|
||||
RCT_TEXT_PROPERTY(TextDecorationStyle, _textDecorationStyle, NSUnderlineStyle);
|
||||
RCT_TEXT_PROPERTY(WritingDirection, _writingDirection, NSWritingDirection)
|
||||
RCT_TEXT_PROPERTY(Opacity, _opacity, CGFloat)
|
||||
RCT_TEXT_PROPERTY(TextShadowOffset, _textShadowOffset, CGSize);
|
||||
RCT_TEXT_PROPERTY(TextShadowRadius, _textShadowRadius, CGFloat);
|
||||
RCT_TEXT_PROPERTY(TextShadowColor, _textShadowColor, UIColor *);
|
||||
|
||||
- (void)setAllowFontScaling:(BOOL)allowFontScaling
|
||||
{
|
||||
|
||||
@@ -59,6 +59,9 @@ RCT_EXPORT_SHADOW_PROPERTY(textDecorationLine, RCTTextDecorationLineType)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(writingDirection, NSWritingDirection)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(allowFontScaling, BOOL)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(opacity, CGFloat)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(textShadowOffset, CGSize)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(textShadowRadius, CGFloat)
|
||||
RCT_EXPORT_SHADOW_PROPERTY(textShadowColor, UIColor)
|
||||
|
||||
- (RCTViewManagerUIBlock)uiBlockToAmendWithShadowViewRegistry:(NSDictionary<NSNumber *, RCTShadowView *> *)shadowViewRegistry
|
||||
{
|
||||
|
||||
@@ -30,6 +30,11 @@ var TextStylePropTypes = Object.assign(Object.create(ViewStylePropTypes), {
|
||||
['normal' /*default*/, 'bold',
|
||||
'100', '200', '300', '400', '500', '600', '700', '800', '900']
|
||||
),
|
||||
textShadowOffset: ReactPropTypes.shape(
|
||||
{width: ReactPropTypes.number, height: ReactPropTypes.number}
|
||||
),
|
||||
textShadowRadius: ReactPropTypes.number,
|
||||
textShadowColor: ColorPropType,
|
||||
/**
|
||||
* @platform ios
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user