mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Implemented inline image support for <Text>
Summary: @public This diff implements inline image support for <Text> nodes. Images are specified using <Image> tags, however all properties of the image are currently ignored apart from the source (including width/height styles). Images are loaded asyncronously, and will trigger a text re-layout when they have loaded. Reviewed By: @javache Differential Revision: D2507725 fb-gh-sync-id: 59d0696d00a1bc531915cc35242a16b2dec96e85
This commit is contained in:
committed by
facebook-github-bot-0
parent
c740edaf03
commit
91e6c98ecd
@@ -13,6 +13,7 @@
|
||||
#import "RCTUIManager.h"
|
||||
#import "RCTBridge.h"
|
||||
#import "RCTConvert.h"
|
||||
#import "RCTImageComponent.h"
|
||||
#import "RCTLog.h"
|
||||
#import "RCTShadowRawText.h"
|
||||
#import "RCTSparseArray.h"
|
||||
@@ -191,8 +192,17 @@ static css_dim_t RCTMeasure(void *context, float width)
|
||||
} else if ([child isKindOfClass:[RCTShadowRawText class]]) {
|
||||
RCTShadowRawText *shadowRawText = (RCTShadowRawText *)child;
|
||||
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:shadowRawText.text ?: @""]];
|
||||
} else if ([child conformsToProtocol:@protocol(RCTImageComponent)]) {
|
||||
UIImage *image = ((id<RCTImageComponent>)child).image;
|
||||
if (image) {
|
||||
NSTextAttachment *imageAttachment = [NSTextAttachment new];
|
||||
imageAttachment.image = image;
|
||||
[attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:imageAttachment]];
|
||||
} else {
|
||||
//TODO: add placeholder image?
|
||||
}
|
||||
} else {
|
||||
RCTLogError(@"<Text> can't have any children except <Text> or raw strings");
|
||||
RCTLogError(@"<Text> can't have any children except <Text>, <Image> or raw strings");
|
||||
}
|
||||
|
||||
[child setTextComputed];
|
||||
|
||||
Reference in New Issue
Block a user