[英]how to set swrevealController after my login viewController in swift
[英]How to make View not visible after opening SWRevealController menu - Swift
我目前正在嘗試這樣做,以便當用戶使用我的應用程序時,用戶將看到一個動畫視圖,上面寫着“向左滑動以顯示菜單!” 我希望在用戶向左滑動以顯示菜單后不顯示此視圖。
以下是一些屏幕截圖/圖表,顯示了我的意思:
我嘗試了一些我在互聯網上查找的代碼,例如(animView 是包含標簽的視圖,“向左滑動以顯示菜單”),但是此解決方案不起作用:
if (self.revealViewController().frontViewPosition != FrontViewPosition.left) {
animView.isHidden = true
}
else if (self.revealViewController().frontViewPosition == FrontViewPosition.left){
animView.isHidden = false
}
編輯:我已經在下面的評論中嘗試了建議的解決方案,但是我不確定如何使用它。 以下是我嘗試過的:
func revealController(revealController: SWRevealViewController!, didMoveToPosition position: FrontViewPosition) {
switch(position){
case FrontViewPosition.leftSideMost: break
animView.isHidden = true
default:
break
}
}
與 ANIMVIEW 相關的類的完整代碼
import Foundation
import UIKit
import SVProgressHUD
import Canvas
class WebViewHome: UIViewController, UIWebViewDelegate, SWRevealViewControllerDelegate{
@IBOutlet weak var WebViewTst: UIWebView!
@IBOutlet weak var animView: CSAnimationView!
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.topItem!.title = "Home"
let URL = NSURL(string: "https://gunnoracle.com/")
WebViewTst.loadRequest(NSURLRequest(url: URL! as URL) as URLRequest)
let topSpace = -190
let bottomSpace = -3045
let leftSpace = -40
let rightSpace = -40
WebViewTst.scrollView.contentInset = UIEdgeInsets(top: CGFloat(topSpace), left: CGFloat(leftSpace), bottom: CGFloat(bottomSpace), right: CGFloat(rightSpace))
WebViewTst.scrollView.bounces = false
WebViewTst.scrollView.maximumZoomScale = 1.0
WebViewTst.scrollView.minimumZoomScale = 1.0
WebViewTst.delegate = self
}
private func revealController(revealController: SWRevealViewController!, didMoveToPosition position: FrontViewPosition) {
if (revealController.frontViewPosition == FrontViewPosition.leftSide){
}
else{
}
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .linkClicked:
let topSpace = -170
let bottomSpace = -2840
let leftSpace = -40
let rightSpace = -40
animView.startCanvasAnimation()
WebViewTst.scrollView.contentInset = UIEdgeInsets(top: CGFloat(topSpace), left: CGFloat(leftSpace), bottom: CGFloat(bottomSpace), right: CGFloat(rightSpace))
WebViewTst.scrollView.bounces = false
WebViewTst.scrollView.maximumZoomScale = 1.0
WebViewTst.scrollView.minimumZoomScale = 1.0
WebViewTst.delegate = self
default:
break
}
return true
}
func webViewDidStartLoad(_ webView: UIWebView) {
SVProgressHUD.show(withStatus: "Loading...")
SVProgressHUD.setDefaultStyle(SVProgressHUDStyle.dark)
SVProgressHUD.setRingThickness(1.0)
NSLog("Webview has started loading")
}
func webViewDidFinishLoad(_ webView: UIWebView) {
SVProgressHUD.dismiss()
NSLog("Webview has successfully loaded")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
僅在第一次顯示標簽(第一個問題) :
您可以使用didMoveToPosition
方法來識別用戶滑動了菜單。 並檢查如果revealController.frontViewPosition == FrontViewPositionRight
然后隱藏標簽並在SQLite 中保存用戶已經刷過左側菜單的記錄。 並檢查標簽是否需要在ViewDidLoad
或ViewWillAppear
使用 SQLite 記錄ViewWillAppear
。 您可以使用 FMDB: github.com/ccgus/fmdb
對於 UILabel 位置(第二個問題):
它應該是 2 個子視圖(webview 是第一個子視圖,標簽是另一個子視圖)。 您可以在stackoverflow.com/questions/4631878/ 中學習
請記住:
首先,不要private
委托不能工作的revealController
函數。另外添加SWRevealViewControllerDelegate
其次,你忘記把self.revealViewController().delegate = self
放在ViewDidAppear
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.