我想在按钮操作上更改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()时,它会瞬间改变,然后滚动地图视图动画。我需要它做慢慢动画像改变框架。有什么建议吗?
答案 0 :(得分:2)
您应该在动画块中用self.mapView.layoutIfNeeded()
替换self.view.layoutIfNeeded()
,因为您布局的约束是视图的子视图而不是mapView。
答案 1 :(得分:0)
尝试使用此动画制作动画。请根据您的需要管理坐标。
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
})