В настоящее время я пытаюсь сделать так, чтобы, когда пользователь использует мое приложение, пользователь увидит представление анимации, в котором говорится: «Слайд влево, чтобы вывести меню!». Я хочу, чтобы это представление не отображалось, когда пользователь скользит влево, чтобы вывести меню.Как сделать вид невидимым после открытия меню SWRevealController - Swift
Вот некоторые скриншоты/диаграмма показывает, что я имею в виду:
Я попробовал некоторый код, который я смотрел на интернете, такие как (animView быть, содержащим метка "Slide слева Bring Out Menu"), однако это решение не работает:
if (self.revealViewController().frontViewPosition != FrontViewPosition.left) {
animView.isHidden = true
}
else if (self.revealViewController().frontViewPosition == FrontViewPosition.left){
animView.isHidden = false
}
EDIT: Я пробовал предлагаемые решения в комментариях ниже, однако я не уверен, как это использовать. Ниже то, что я пробовал:
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.
}
}
Чтобы показать один раз на этикетке, вы можете использовать sqlite, чтобы помнить пользователя, который пользователь скользит. Вот статья для распознавания слайда: https://github.com/John-Lluch/SWRevealViewController/issues/492 –
@JackyShek вы могли бы дать дополнительную информацию о том, как это сделать. Я был бы очень признателен. Я все еще очень смущен. –
Для первой проблемы вы можете использовать метод 'didMoveToPosition' для SWreveal для распознавания того, что пользователь проверил меню. Проверьте это, если 'opensController.frontViewPosition == FrontViewPositionRight' затем скрыть метку и сохранить запись в SQLite, которую пользователь проверил в левом меню.И проверьте, что метка должна показывать или нет с записью SQLite в 'viewDidLoad'. Вы можете использовать FMDB: https://github.com/ccgus/fmdb –