动画不执行
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。
我想根据按钮操作更改 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。