动画不执行

Animation dont execute

我想根据按钮操作更改 mapView 的大小,所以我有两个函数可以执行此操作。

func makeFullScreenMap() {
    println(self.heightConstraint.constant)
    self.heightConstraint.constant = self.tableView.frame.height
    println(self.heightConstraint.constant)
    self.mapView.setNeedsUpdateConstraints()
    UIView.animateWithDuration(5, animations: { () -> Void in
        self.mapView.layoutIfNeeded()
    })

}

func makeHideScreenMap() {

    self.heightConstraint.constant = 0
    self.mapView.setNeedsUpdateConstraints()
    UIView.animateWithDuration(5, animations: { () -> Void in
        self.mapView.layoutIfNeeded()
    })
}

否则,我有一些操作可以跟踪按钮状态并选择我需要使用的确切方法。

  @IBAction func fullScreen(sender: AnyObject) {

        println(changeMapButton.state.rawValue)

        if changeMapButton.state == UIControlState.Highlighted {
            makeFullScreenMap()
            changeMapButton.selected = true

        } else {
            changeMapButton.highlighted = true
            makeHideScreenMap()
        }

    }

问题是 - 当它向下设置动画时,它会带有动画并慢慢地使 mapView 变大。当我使用 makeHideScreenMap() 方法时,它会立即发生变化,然后滚动地图视图动画。我需要它像改变框架一样慢慢地做动画。有什么建议吗?

尝试使用它制作动画。请根据您的需要管理坐标。

let trans = CGAffineTransformScale(mapView.transform, 1.00, 1.00)
UIView .animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {

        self. mapView.transform = CGAffineTransformScale(self. mapView.transform, 100.0, 100.0)

        }, completion: {
            (value: Bool) in
    })

您应该在动画块中将 self.mapView.layoutIfNeeded() 替换为 self.view.layoutIfNeeded(),因为您布局的约束是视图的子视图而不是 mapView。