React Native Clipboard - 如何复制图像或除文本以外的任何内容?
React Native Clipboard - how to copy an image or anything other than text?
在React Native中,有了剪贴板,如何将图片放入剪贴板?设置剪贴板内容的唯一方法是 "setString"。可以不设置图片或者其他字符串以外的内容吗?
可以桥接本机 iOS 剪贴板 API 并公开 setImage
方法。为此,您需要:
- 添加原生模块头文件
Clipboard.h
:
#import "RCTBridgeModule.h"
@interface Clipboard : NSObject <RCTBridgeModule>
@end
- 添加本机模块实现文件
Clipboard.m
。我们需要复制 base64 编码的图像,但您可以使用任何其他图像表示来调整代码:
#import <UIKit/UIKit.h>
#import <MobileCoreServices/UTCoreTypes.h>
#import "Clipboard.h"
@implementation Clipboard
RCT_EXPORT_MODULE(BetterClipboard); // this is how our native module will be named
RCT_EXPORT_METHOD(addBase64Image:(NSString *)base64Image) {
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setPersistent:YES];
NSData *imageData = [[NSData alloc]initWithBase64EncodedString:base64Image options:NSDataBase64DecodingIgnoreUnknownCharacters];
[pasteboard setImage:[UIImage imageWithData:imageData]];
}
@end
- 然后你就可以在你的 React 应用程序中使用它了:
import { NativeModules } from 'react-native';
NativeModules.BetterClipboard.addBase64Image(base64EncodedImage);
不幸的是,我不知道如何为 Android 做同样的事情。
在React Native中,有了剪贴板,如何将图片放入剪贴板?设置剪贴板内容的唯一方法是 "setString"。可以不设置图片或者其他字符串以外的内容吗?
可以桥接本机 iOS 剪贴板 API 并公开 setImage
方法。为此,您需要:
- 添加原生模块头文件
Clipboard.h
:
#import "RCTBridgeModule.h"
@interface Clipboard : NSObject <RCTBridgeModule>
@end
- 添加本机模块实现文件
Clipboard.m
。我们需要复制 base64 编码的图像,但您可以使用任何其他图像表示来调整代码:
#import <UIKit/UIKit.h>
#import <MobileCoreServices/UTCoreTypes.h>
#import "Clipboard.h"
@implementation Clipboard
RCT_EXPORT_MODULE(BetterClipboard); // this is how our native module will be named
RCT_EXPORT_METHOD(addBase64Image:(NSString *)base64Image) {
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setPersistent:YES];
NSData *imageData = [[NSData alloc]initWithBase64EncodedString:base64Image options:NSDataBase64DecodingIgnoreUnknownCharacters];
[pasteboard setImage:[UIImage imageWithData:imageData]];
}
@end
- 然后你就可以在你的 React 应用程序中使用它了:
import { NativeModules } from 'react-native';
NativeModules.BetterClipboard.addBase64Image(base64EncodedImage);
不幸的是,我不知道如何为 Android 做同样的事情。