ios - 快速翻转 View : issues with whole screen flipping + tap gesture only works twice

标签 ios swift uiview uiviewcontroller uitapgesturerecognizer

我想创建一个简单的翻转效果,但我不明白我在这里遇到的问题:

  • 整个屏幕都在翻转,不仅仅是 View ,有没有办法只翻转100,100个正方形?
  • 我只能翻转两次,然后水龙头就不再工作了,你知道为什么吗?

    import UIKit
    class ViewController: UIViewController {
    
    var fromOneToTwo : Bool = true
    var view1 : UIImageView!
    var view2 : UIImageView!
    var tap : UITapGestureRecognizer!
    
    func handleTap(tap: UITapGestureRecognizer){
    
        println("1/fromOneToTwo \(fromOneToTwo)")
        var v1 = (fromOneToTwo ? self.view1 : self.view2)
        var v2 = (fromOneToTwo ? self.view2 : self.view1)
    
        UIView.transitionFromView(v1, toView: v2, duration: 0.5, options: (UIViewAnimationOptions.TransitionFlipFromLeft | UIViewAnimationOptions.CurveEaseInOut) ) { finished in
    
            self.fromOneToTwo = !self.fromOneToTwo
            println("2/fromOneToTwo \(self.fromOneToTwo) ")
        }
    }
    
    func createView( str:String)->UIImageView!{
        var img = UIImage(named: str)!
        var imgView = UIImageView(frame: CGRectMake(0,0, 200, 200))
        imgView.image = img
        imgView.sizeToFit()
        imgView.userInteractionEnabled = true
        imgView.addGestureRecognizer(tap)
        return imgView
    }
    
    required init(coder aDecoder:NSCoder){
        super.init(coder:aDecoder)
    
        tap = UITapGestureRecognizer(target: self, action: "handleTap:")
        view1 = createView("imageOnee.png")
        view2 = createView("imageTwo.png")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        view.addSubview(view1)
        view.addSubview(view2)
    
        view.backgroundColor = UIColor.redColor()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    

    }

此外,当我尝试在自定义 UIView 中添加整个代码,并将自定义实例 myView 添加到 ViewController 时,点击根本不起作用。

最佳答案

我为 view1view2 创建了一个 container View 。然后,点击识别器将添加到此容器 View 中。

class ViewController: UIViewController {

    var fromOneToTwo : Bool = true
    var view1 : UIImageView!
    var view2 : UIImageView!
    var container : UIView!
    var tap : UITapGestureRecognizer!

    func handleTap(tap: UITapGestureRecognizer){

        println("1/fromOneToTwo \(fromOneToTwo)")
        var v1 = (fromOneToTwo ? self.view1 : self.view2)
        var v2 = (fromOneToTwo ? self.view2 : self.view1)

        UIView.transitionFromView(v1, toView: v2, duration: 0.5, options: .TransitionFlipFromLeft | .CurveEaseInOut ) { finished in

            self.fromOneToTwo = !self.fromOneToTwo
            println("2/fromOneToTwo \(self.fromOneToTwo) ")
        }
    }

    func createView( str:String)->UIImageView!{
        var img = UIImage(named: str)!
        var imgView = UIImageView(frame: CGRectMake(0, 0, 200, 200))
        imgView.image = img
        imgView.sizeToFit()
        return imgView
    }

    required init(coder aDecoder:NSCoder){
        super.init(coder:aDecoder)

        tap = UITapGestureRecognizer(target: self, action: "handleTap:")
        view1 = createView("imageOnee.png")
        container = UIView(frame: CGRectMake(0, 0, view1.bounds.width, view1.bounds.height))
        container.userInteractionEnabled = true

        container.addGestureRecognizer(tap)
        container.addSubview(view1)
        view2 = createView("imageTwo.png")
        container.addSubview(view2)
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(container)

        view.backgroundColor = UIColor.redColor()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

关于ios - 快速翻转 View : issues with whole screen flipping + tap gesture only works twice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749790/

相关文章:

swift - 为什么我的父类(super class)在 Swift 中调用子类的方法而不是它自己的方法?

objective-c - 使用 AVAssetSessionExport 不断获取进度信息

ios - 如何在显示 UIPopover 时保持事件的 UITextField;

ios - 导航栏大标题不缩进

ios - 如何在 Objective c 中以编程方式将 2 个 UIButton 放置在 UIView 中,宽度相等?

ios - UIView 中的 UIPinchGestureRecognizer 无法正常工作

ios - iCloud 和核心数据错误(无处不在 : Didn't get baseline metadata back from metadata url)

ios - 应用程序在后台时未收到 UINotification ios

ios - Swift/XCode - AdMob 在 dismissViewController 期间插入

swift - 具有默认值的自定义变量 setter