質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

3回答

3737閲覧

SwiftのUIWebViewで画像を読み込もうとしています。

etemon

総合スコア19

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

1クリップ

投稿2016/03/19 09:24

自分のサイトにあるGIFアニメをswiftで再生させたくていろいろ調べた結果、UIImageViewでGIFの再生機能がないことがわかりました。それでUIWebViewで表示しようと頑張ってみたんですがなぜかうまくいきません、、、

func hoge(){ guard let filePath = NSBundle.mainBundle().pathForResource("fractal", ofType: "gif"), let gifData = NSData(contentsOfFile: filePath) else { return } let webViewBG = UIWebView() webViewBG.frame = CGRectMake(0, 0, 100, 100) webViewBG.loadData(gifData, MIMEType: "image/gif", textEncodingName: "utf-8", baseURL: NSURL(string: "GIF画像があるURL")!) self.view.addSubview(webViewBG) }

あ、ちなみにGifアニメがあるWebgWeb画面をそのまま表示することは以下のようにしたら一応できます

func hoge(){ let myImageView = WKWebView(frame: CGRectMake(0, 0, 100, 100)) let myURL=NSURL(string: "GIF画像があるURL") let myURLRequest=NSURLRequest(URL: myURL!) myImageView.loadRequest(myURLRequest) //なんとかページ全体ではなく、画像だけを表示したくて以下のように書いたが、変わりはなかった myImageView.sizeToFit() myImageView.contentMode = UIViewContentMode.ScaleAspectFit myImageView.clipsToBounds = true self.view.addSubview(myImageView) }

でも上のように書いてしまうとUIImageIVew()のように画像だけを表示してくれるのではなく、ページ全体を表示してしまうので余分な白い余白が入ってしまいます、、、

それで参考にしたサイトが以下になります
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/fairuno-biao-shi
http://d.hatena.ne.jp/kanotomo/20081229/1230509030

もうこれで何週間も詰まってます(>.<)
できる方がいらっしゃったら、ぜひ知恵を貸してください!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

最終的にはweb上のgifを表示できればいいでしょうか?

白い余白はマージンかパディングだろうと思ってあれこれやってみた結果、余白は無くせたのですがサイズ設定がうまくいかずimgタグを断念。代わりに背景として表示させてみるといまくいったので紹介します。

swift

1func hoge() { 2 let webViewBG = UIWebView() 3 webViewBG.frame = CGRectMake(0, 0, 100, 100) 4 webViewBG.layer.borderWidth = 1 //オマケで枠線 5 webViewBG.layer.borderColor = UIColor.blackColor().CGColor //色は黒 6 webViewBG.scrollView.scrollEnabled = false //スクロールは止める 7 //表示させるhtml 8 let html = "<body style=\"background-image:url('GIF画像があるURL'); background-size:cover; background-attachment:fixed; background-position:center;\"></body>" 9 //上のhtmlをWebViewに表示 10 if let htmlData = html.dataUsingEncoding(NSUTF8StringEncoding) { 11 webViewBG.loadData(htmlData, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: NSURL(string: "")!) 12 self.view.addSubview(webViewBG) 13 } 14}

###【追記】ローカルファイルでも出来ました

html内のurlはファイル名だけを指定、baseURLでアプリ内のリソースの場所を指定してやる。

swift

1func hoge() { 2 : 3 let html = "<body style=\"background-image:url('fractal.gif'); background-size:cover; background-attachment:fixed; background-position:center;\"></body>" 4 : 5 webViewBG.loadData(htmlData, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: NSBundle.mainBundle().resourceURL!.absoluteURL) 6 : 7}

参考URL:webviewでローカル(アプリ内)の画像を表示する

投稿2016/03/22 02:26

編集2016/03/22 03:01
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのコードをコビペして、baseURLの指定は別になんでもいいと思うのでbaseURL: NSURL(string: "")!にしてhoge()を呼び出したら、ちゃんとアニメーションGIFを表示できました。

fractal.gifがちゃんとバンドルリソースに入ってない可能性はないですか?

swift

1guard let filePath = NSBundle.mainBundle().pathForResource("fractal", ofType: "gif"), 2 let gifData = NSData(contentsOfFile: filePath) else { 3 return 4}

のfilePathやgifDataが読めなくてリターンしていないか確認してみることと、
プロジェクトのTARGETS-[Build Phases]-[Copy Bundle Resources]にfractal.gifがちゃんと登録されているか確認してみることをお勧めします。

投稿2016/03/19 14:33

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

UIWebViewでの解決方法は分からないのですが、もしライブラリを使用しても良いのでしたら
Flipboard/FLAnimatedImage
というライブラリはいかがでしょうか?

以下導入の説明ブログになります。
【iOS Swift入門 #234】GIFアニメーションを再生するサンプル(FLAnimatedImage)

参考になりましたら幸いです。

投稿2016/03/19 12:53

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問