簡體   English   中英

打開 SWRevealController 菜單后如何使視圖不可見 - Swift

[英]How to make View not visible after opening SWRevealController menu - Swift

我目前正在嘗試這樣做,以便當用戶使用我的應用程序時,用戶將看到一個動畫視圖,上面寫着“向左滑動以顯示菜單!” 我希望在用戶向左滑動以顯示菜單后不顯示此視圖。

以下是一些屏幕截圖/圖表,顯示了我的意思:

示范

示范2

我嘗試了一些我在互聯網上查找的代碼,例如(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 中保存用戶已經刷過左側菜單的記錄。 並檢查標簽是否需要在ViewDidLoadViewWillAppear使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM