2016-12-09 4 views
0

申し訳ありませんが、私はSwiftで扱っている構造体や試行錯誤に精通していませんが、私がする必要があるのは、iMessageの画像部分が設定されているという意味で、ステッカーに。Swiftの構造体に問題があり、URLからUIImageを作成していますか?

私はAppleのドキュメントとhttps://www.captechconsulting.com/blogs/ios-10-imessages-sdk-creating-an-imessages-extensionをぼんやりしていますが、これを行う方法や実際に構造がどのように機能するのか分かりません。私は構造体を読み上げましたが、それはAppleがサンプルコード(Appleでダウンロード可能)で行っていることを達成するのに役立ちませんでした

アップルは、まず構造体をプロパティとして取り上げてメッセージを作成します私はステッカーを取る代わりに

guard let conversation = activeConversation else { fatalError("Expected a conversation") } 
     //Create a new message with the same session as any currently selected message. 
     let message = composeMessage(with: MSSticker, caption: "sup", session: conversation.selectedMessage?.session) 

     // Add the message to the conversation. 
     conversation.insert(message) { error in 
      if let error = error { 
       print(error) 
      } 
     } 

そして、彼らはメッセージを作成する(これはサンプルコードから直接である)、この操作を行います。

fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage { 
     var components = URLComponents() 
     components.queryItems = iceCream.queryItems 

     let layout = MSMessageTemplateLayout() 
     layout.image = iceCream.renderSticker(opaque: true) 
     layout.caption = caption 

     let message = MSMessage(session: session ?? MSSession()) 
     message.url = components.url! 
     message.layout = layout 

     return message 
    } 
} 

は、基本的には、この行は、Imは私が設定する必要がありますように問題を持つものです私のステッカー画像:

layout.image = iceCream.renderSticker(opaque: true) 

Appleは、私は彼らのステッカーのうち、画像部分を引っ張ってrenderStickerに理解していない全体の複雑な関数のことをして、私は彼らの方法を試してみましたが、私はこれが優れていると思う:

let img = UIImage(contentsOfURL: square.imageFileURL) 
     layout.image = ing 

layout.imageはUIImageが必要ですが、私はステッカーからimageFileURLを取得できますが、これをUIImageに取得することはできません。使用可能なオーバーロードに一致しないというエラーが表示されます。

ここでは何ができますか?ステッカーからメッセージに画像を挿入するにはどうしたらいいですか? imageFileURLから画像を取得するにはどうすればよいですか?

+0

質問の最後にある 'UIImage'イニシャライザに関する質問だけでは、他の無関係の情報をすべて投稿したのはなぜですか?あなたの質問を関連する部分だけに集中させてください。 – rmaddy

+0

申し訳ありませんが、私はそれがすべてiMessageと関連し、構造体を必要とするかもしれないと思った – skyguy

答えて

1

UIImageinit(contentsOfURL:)イニシャライザはありません。最も近いものはinit(contentsOfFile:)です。

あなたが行うことができ、ファイルのURLを持つ1ことを使用するには:私は正確に質問が何であるかわからないんだけど、私は私ができる限り多くに対処しようとするでしょう

let img = UIImage(contentsOfFile: square.imageFileURL.path) 
+0

イメージだけでなく、ステッカーだけを送信する方法があるかどうか知っていますか? – skyguy

+0

私はステッカーについて何も知らない。 – rmaddy

2

-

rmaddyが述べたように、ファイルの場所を指定してイメージを作成する場合は、単に指定したUIImageコンストラクタを使用します。

rmaddyの回答のコメントで尋ねたステッカーだけを送信する限り、iMessageの会話にステッカーだけを挿入できます。この機能は、MSConversationの一部として利用できます。ここではドキュメントへのリンクです:

https://developer.apple.com/reference/messages/msconversation/1648187-insert

アクティブな会話があなたのMSMessagesAppViewControllerからアクセスすることができます。

+0

もしあなたが2度投票したら、私はあなたに投票します。ありがとうございました。 – skyguy

関連する問題