しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Swift】WKWebViewのスクロール速度を変更する

WKWebViewのスクロール速度を変更する方法を調べてみました。 まずはViewControllerにwebViewを貼り付けます。

import UIKit
import WebKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webView = WKWebView(frame: view.bounds)
        webView.load(URLRequest(url: URL(string: "https://google.com")!))
        view.addSubview(webView)
    }
}

起動するとSafariなどと同様のスクロール速度です。

f:id:llcc:20161213230103g:plain

webViewのscrollViewのdecelerationRateにUIScrollViewDecelerationRateNormalをセットします。

import UIKit
import WebKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webView = WKWebView(frame: view.bounds)
        webView.load(URLRequest(url: URL(string: "https://google.com")!))
        webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal // 追加
        view.addSubview(webView)
    }
}

これで起動すると、スクロールがかなり早くなります。

f:id:llcc:20161213230527g:plain

スクロール速度はUIScrollViewDecelerationRateFastとUIScrollViewDecelerationRateNormalが用意されています。

f:id:llcc:20161213230129p:plain

decelerationRateはCGFloatなので直接値を指定する事もできます。
ちなみに0.1だと指を話した瞬間に止まるような動きになります。

webView.scrollView.decelerationRate = 0.1

それぞれの値は下のようになっていました。

print(webView.scrollView.decelerationRate) // 0.9893243312
print(UIScrollViewDecelerationRateNormal) // 0.998
print(UIScrollViewDecelerationRateFast) // 0.99

参考URL

UIWebViewのスクロールを早くしたい! - Qiita