2015-04-28 31 views
0

使用自动版式使用自动布局我为中心的两个UIView的在屏幕上的,现在我想从一个到另一个与CurlUp过渡然后CurlDown使用此功能两种观点:试图卷起/向下卷曲在斯威夫特

func curlUp() { 
    let transitionOptions = UIViewAnimationOptions.TransitionCurlUp 

    UIView.transitionFromView(cardFront, 
     toView: cardBack, 
     duration: 5.0, 
     options: transitionOptions, 
     completion: { _ in 

      let transitionOptions = UIViewAnimationOptions.TransitionCurlDown 

      UIView.transitionFromView(self.cardBack, 
       toView: self.cardFront, 
       duration: 5.0, 
       options: transitionOptions, 
       completion: { _ in 
        // 
      }) 

    }) 

} 

发生了什么事是,整个屏幕被卷起如本图所示:

enter image description here

的视图控制器的全部源代码是在这里: https://github.com/melling/Swift/blob/master/TransitionWithView/TransitionWithView/ViewController.swift

GitHub的项目建立并在Xcode 6.3.1

运行下面是用于添加子视图代码:

func buildView() { 

    cardBack = UIView() 
    cardBack.setTranslatesAutoresizingMaskIntoConstraints(false) 
    cardBack.backgroundColor = UIColor.redColor() 
    self.view.addSubview(cardBack) 

    cardFront = UIView() 
    cardFront.setTranslatesAutoresizingMaskIntoConstraints(false) 
    cardFront.backgroundColor = UIColor.greenColor() 
    self.view.addSubview(cardFront) 

    let height = 50 
    let width = 50 

    let viewDictionary:Dictionary<String,UIView> = ["cardFront": cardFront, "cardBack": cardBack] 

    let metrics:Dictionary<String,Int> = ["width": width, "height": height] 
    let hConstraint = "H:[cardFront(==width)]" 
    let vConstraint = "V:[cardFront(==height)]" 

    addStandardConstraints(hConstraint, viewDictionary: viewDictionary, metrics: metrics) 
    addStandardConstraints(vConstraint, viewDictionary: viewDictionary, metrics: metrics) 

    centerViewXY(self.view, child: cardFront) 

    let h1Constraint = "H:[cardBack(==width)]" 
    let v1Constraint = "V:[cardBack(==height)]" 

    addStandardConstraints(h1Constraint, viewDictionary: viewDictionary, metrics: metrics) 
    addStandardConstraints(v1Constraint, viewDictionary: viewDictionary, metrics: metrics) 

    centerViewXY(self.view, child: cardBack) 

    NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "curlUp", userInfo: nil, repeats: false) 


} 

func centerViewXY(parent: UIView, child: UIView) { 

    var constX = NSLayoutConstraint(item: child, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: parent, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0) 
    parent.addConstraint(constX) 

    var constY = NSLayoutConstraint(item: child, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: parent, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0) 
    parent.addConstraint(constY) 

} 

func addStandardConstraints(aConstraint:String, viewDictionary:Dictionary<String,UIView!>, metrics:Dictionary<String, Int>) { 

    self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(aConstraint, options: nil, metrics: metrics, views: viewDictionary)) 

} 

[更新]

创建容器的工作。我犯下的工作代码到Github上:https://github.com/melling/Swift

TransitionWithView是Xcode项目。

enter image description here

+0

的可能重复的[如何翻转的个体的UIView(而不翻转父视图)](http://stackoverflow.com/questions/9524048/how-to-flip-an-individual-uiview-without-flipping-的父视图) –

回答

1

是的,一个普遍的问题。您需要使用另一个视图来包含您正在转换的两个视图。见this other SO answer