Ich hatte auf Ihre Frage gearbeitet, und dies sind meine Ergebnisse,
Vor allem in der SWRevealViewControllerDelegate
Sie haben drei Methoden von Änderungen an der revealViewController bemerkt panGestureRecognizer
func revealController(revealController: SWRevealViewController!, panGestureBeganFromLocation location: CGFloat, progress: CGFloat) {
}
func revealController(revealController: SWRevealViewController!, panGestureMovedToLocation location: CGFloat, progress: CGFloat, overProgress: CGFloat) {
}
func revealController(revealController: SWRevealViewController!, panGestureEndedToLocation location: CGFloat, progress: CGFloat, overProgress: CGFloat) {
}
zu erhalten
So müssen Sie Ihre FrontViewController
als Delegierten von SWRevealViewController
machen 10
wie diese self.revealViewController().delegate = self
und dann eine Erweiterung von https://www.raywenderlich.com/84043/ios-8-visual-effects-tutorial genannt UIImage+ImageEffects
durch das Tutorial, die auf dem Beispiel-Code gegründet, können wir ein Bild von frontViewController.view erstellen und die Gaußsche Unschärfe aus der genannten Kategorie anwenden Dies ist der Code
import UIKit
class MainViewController: UIViewController,SWRevealViewControllerDelegate {
var imageBlur : UIImageView?
var originalImage : UIImage?
let maxRadius : CGFloat = 5.0
let minRadius = 0
var arrayOfImages : [UIImage]?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
self.revealViewController().delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.originalImage = self.takeSnapShotOfView(self.view)
self.imageBlur = UIImageView(image: self.originalImage)
self.view.addSubview(self.imageBlur!)
}
func revealController(revealController: SWRevealViewController!, panGestureBeganFromLocation location: CGFloat, progress: CGFloat) {
let image = self.originalImage
self.imageBlur?.image = image?.applyFixedBlurWithRadius(CGFloat(progress*self.maxRadius))
}
func revealController(revealController: SWRevealViewController!, panGestureMovedToLocation location: CGFloat, progress: CGFloat, overProgress: CGFloat) {
let image = self.originalImage
self.imageBlur?.image = image?.applyFixedBlurWithRadius(CGFloat(progress*self.maxRadius))
}
func revealController(revealController: SWRevealViewController!, panGestureEndedToLocation location: CGFloat, progress: CGFloat, overProgress: CGFloat) {
let image = self.originalImage
self.imageBlur?.image = image?.applyFixedBlurWithRadius(CGFloat(progress*self.maxRadius))
}
func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) {
if(position == .Left)
{
self.imageBlur?.image = self.originalImage
}
if(position == .Right)
{
let image = self.originalImage
self.imageBlur?.image = image?.applyFixedBlurWithRadius(CGFloat(1*self.maxRadius))
}
}
func takeSnapShotOfView(view:UIView) ->UIImage
{
UIGraphicsBeginImageContext(CGSizeMake(view.frame.size.width, view.frame.size.height))
view.drawViewHierarchyInRect(CGRectMake(0, 0, view.frame.size.width, view.frame.size.height), afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
ich hoffe, das Sie
hilft Es ist fantastisch! Vielen Dank – Julian135