0
반응 네이티브 ios 앱에서 신속한 네이티브 모듈을 사용하여 assets URL에서 애니메이션 GIF를 생성합니다. 이 첫 번째 시도에서 잘 작동하고 있지만 구성 요소를 탈출하고 새로운 자산을 통과 할 때 때때로이 오류 표시, 한 번 응용 프로그램 충돌을 사용 후 :네이티브/스위프트 네이티브 모듈이 한 번만 반응합니다.
반응을 오류 :
또는 때때로
다음내가 내 REAC 내 네이티브 모듈을 호출하는 방법입니다 : 엑스 코드는 반환 할 _instance이 값이없는 것을 말해,이 목표 - C 함수에 나를 리디렉션 t 구성 요소 : 나는 GifGenerator.m 내 빠른 모듈을 내보내는 방법
callImages: function(){
var that = this
const imagesUri = this.parseImages();
var promise = new Promise(function(resolve, reject) {
NativeModules.GifGenerator.initFunction(imagesUri, resolve)
});
promise.then(function(o) {
base64 = "data:image/gif;base64,"+o.url
imagesUri.push(base64);
that.setState({images: imagesUri});
});
}
:
@interface RCT_EXTERN_MODULE(GifGenerator, NSObject)
RCT_EXTERN_METHOD(initFunction:(NSArray *)images
callback:(RCTResponseSenderBlock)callback);
@end
그리고 내 신속 클래스의 importante 부분 :
func initFunction(images : [String], callback: (NSObject) ->()){
self.standardImages = images
return getImages(images, handler: self.generationCallback , someCallback: callback)
}
...
(getImages call generate passing the callback function to it)
...
func generate(mainHandler: (NSObject) ->()) -> Void {
...
(movie to gif generation using AVAssetWriter)
...
videoWriter.finishWritingWithCompletionHandler {() -> Void in
if error == nil {
let resultUrl = self.videoToGif(videoOutputURL)
let ImageData = NSData(contentsOfURL: resultUrl)
let imageBase64:String = ImageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
mainHandler([["url": imageBase64], ["error": "non"]])
if let data = NSData(contentsOfURL: resultUrl) {
let image = UIImage(data: data)
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil);
}
}
그들은의 중요한 부분입니다 내 코드는 필요한 경우 더 많이 보여줄 수 있습니다.