WebView 스크롤에 toolbar 및 navigationBar 숨기기
하는 일
WebView에서 스크롤, Toolbar 숨기기
나는 향상된 디스플레이 기능을 실현하고 싶다.
입문
탐색 컨트롤러를 위쪽에 놓습니다.
기본적으로 표시되는 ViewController 를 선택합니다.
Xcode 메뉴에서Editor → Embed In → Navigation Contoroller
에 추가됩니다.
추가한 후 선택 Shows Toolbar
.
이제 기본 ViewController에 toolbar를 추가합니다.
WebView 스크롤 이벤트 가져오기
WebView에서 scrollView를 iOS5에서 하위 클래스로 설정하여 위임 받기
ViewController.swift
import UIKit
class ViewController: UIViewController, UIWebViewDelegate, UIScrollViewDelegate {
@IBOutlet weak var webView: UIWebView!
var beginingPoint: CGPoint!
var isViewShowed: Bool!
override func viewDidLoad() {
super.viewDidLoad()
// 各種初期化
isViewShowed = false
beginingPoint = CGPoint(x: 0, y: 0)
webView.delegate = self
webView.scrollView.delegate = self
// とりあえず、Google表示してみる
let url: NSURL = NSURL(string:"https://www.google.co.jp/")
webView.loadRequest(NSURLRequest(URL:url))
}
override func viewDidAppear(animated: Bool) {
isViewShowed = true
}
// WebViewをスクロールする際に開始時の値をセット
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
beginingPoint = scrollView.contentOffset
}
// WebViewのスクロールイベント取得 開始時の値と比較してToolbarを表示・非表示
func scrollViewDidScroll(scrollView: UIScrollView) {
var currentPoint = scrollView.contentOffset
var contentSize = scrollView.contentSize
var frameSize = scrollView.frame
var maxOffSet = contentSize.height - frameSize.height
if isViewShowed == true && currentPoint.y < maxOffSet {
self.navigationController?.setToolbarHidden(true, animated: true)
} else {
self.navigationController?.setToolbarHidden(false, animated: true)
}
}
}
이렇게 하면 위로 스크롤할 때 숨깁니다.아래로 스크롤하고 싶을 때 표시됩니다.
content Offset과 비교를 통해 끝까지 굴러갈 때 bounce를 추가하면 toolbar는 째깍째깍 동작을 이상하게 만든다.bounce를 자를 수 있지만 UIRefreshControl을 사용하여 업데이트(하단으로 업데이트)하고 싶어서 이렇게 되었습니다.
보충하여 기록하다
@sassymanyuichi 선생님께서 저에게 주신 평론func scrollViewDidScroll(scrollView: UIScrollView) {
let currentPoint = scrollView.contentOffset
let contentSize = scrollView.contentSize
let frameSize = scrollView.frame
let maxOffSet = contentSize.height - frameSize.height
if currentPoint.y >= maxOffSet {
print("hit the bottom")
self.navigationController?.setToolbarHidden(true, animated: true)
} else if scrollBeginingPoint.y < currentPoint.y {
//print("Scrolled down")
self.navigationController?.setToolbarHidden(true, animated: true)
}else{
//print("Scrolled up")
self.navigationController?.setToolbarHidden(false, animated: true)
}
}
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
탐색 모음 숨기기
func scrollViewDidScroll(scrollView: UIScrollView) {
let currentPoint = scrollView.contentOffset
let contentSize = scrollView.contentSize
let frameSize = scrollView.frame
let maxOffSet = contentSize.height - frameSize.height
if currentPoint.y >= maxOffSet {
print("hit the bottom")
navigationController?.hidesBarsOnSwipe = true
} else if beginingPoint.y < currentPoint.y {
//print("Scrolled down")
navigationController?.hidesBarsOnSwipe = true
}else{
//print("Scrolled up")
// NavigationBarを表示
navigationController?.navigationBarHidden = false
navigationController?.hidesBarsOnSwipe = false
}
}
이런 느낌으로 하면 돼요.
Reference
이 문제에 관하여(WebView 스크롤에 toolbar 및 navigationBar 숨기기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hakota/items/0dd6d20b71eca94d6f3c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class ViewController: UIViewController, UIWebViewDelegate, UIScrollViewDelegate {
@IBOutlet weak var webView: UIWebView!
var beginingPoint: CGPoint!
var isViewShowed: Bool!
override func viewDidLoad() {
super.viewDidLoad()
// 各種初期化
isViewShowed = false
beginingPoint = CGPoint(x: 0, y: 0)
webView.delegate = self
webView.scrollView.delegate = self
// とりあえず、Google表示してみる
let url: NSURL = NSURL(string:"https://www.google.co.jp/")
webView.loadRequest(NSURLRequest(URL:url))
}
override func viewDidAppear(animated: Bool) {
isViewShowed = true
}
// WebViewをスクロールする際に開始時の値をセット
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
beginingPoint = scrollView.contentOffset
}
// WebViewのスクロールイベント取得 開始時の値と比較してToolbarを表示・非表示
func scrollViewDidScroll(scrollView: UIScrollView) {
var currentPoint = scrollView.contentOffset
var contentSize = scrollView.contentSize
var frameSize = scrollView.frame
var maxOffSet = contentSize.height - frameSize.height
if isViewShowed == true && currentPoint.y < maxOffSet {
self.navigationController?.setToolbarHidden(true, animated: true)
} else {
self.navigationController?.setToolbarHidden(false, animated: true)
}
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
let currentPoint = scrollView.contentOffset
let contentSize = scrollView.contentSize
let frameSize = scrollView.frame
let maxOffSet = contentSize.height - frameSize.height
if currentPoint.y >= maxOffSet {
print("hit the bottom")
self.navigationController?.setToolbarHidden(true, animated: true)
} else if scrollBeginingPoint.y < currentPoint.y {
//print("Scrolled down")
self.navigationController?.setToolbarHidden(true, animated: true)
}else{
//print("Scrolled up")
self.navigationController?.setToolbarHidden(false, animated: true)
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
let currentPoint = scrollView.contentOffset
let contentSize = scrollView.contentSize
let frameSize = scrollView.frame
let maxOffSet = contentSize.height - frameSize.height
if currentPoint.y >= maxOffSet {
print("hit the bottom")
navigationController?.hidesBarsOnSwipe = true
} else if beginingPoint.y < currentPoint.y {
//print("Scrolled down")
navigationController?.hidesBarsOnSwipe = true
}else{
//print("Scrolled up")
// NavigationBarを表示
navigationController?.navigationBarHidden = false
navigationController?.hidesBarsOnSwipe = false
}
}
Reference
이 문제에 관하여(WebView 스크롤에 toolbar 및 navigationBar 숨기기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hakota/items/0dd6d20b71eca94d6f3c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)