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

  • 整个屏幕都在翻转,不仅是视图,有没有办法仅翻转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时,分接头根本不起作用。

    最佳答案

    我完成了为containerview1创建view2视图的工作。然后,将拍子识别器添加到此容器视图。

    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 :全屏翻转+点击手势的问题只起作用两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27749790/

    10-12 00:20
    查看更多