我在情节提要中有mapView到ViewController。它具有4个约束(高度等于:300,尾部对齐:安全区域,对齐至:安全区域,顶部对齐至:安全区域。我为mapview创建了tapGestureRecognizer。我想在用户点击时将mapview调整为全屏地图。
private func setupMapView() {
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(mapTouchAction(gestureRecognizer:)))
mapView.addGestureRecognizer(gestureRecognizer)
}
@objc func mapTouchAction(gestureRecognizer: UITapGestureRecognizer) {
}
我试图将高度限制更改为屏幕高度,但这不是我想要的(视图位于屏幕中间,然后调整其大小,这不是我想要的)我在mapTouchAction中使用了此代码()。我希望通过动画将视图的大小调整为底视图(屏幕高度)。我该如何实现?我应该使用CGAffineTransform还是其他方法?有什么想法吗?
for constraint in self.mapView.constraints {
if constraint.identifier == "mapViewHeightConstraintID" {
constraint.constant = UIScreen.main.bounds.height
}
}
UIView.animate(withDuration: 2, animations: {
self.mapView.layoutIfNeeded()
})
答案 0 :(得分:0)
我找到了解决问题的简单方法。我只更改了mapView框架。因此,在tapGesture函数mapTouchAction(_:UITapGestureRecognizer)内部,我有
@objc func mapTouchAction(gestureRecognizer: UITapGestureRecognizer) {
UIView.animate(withDuration: 2, animations: {
self.mapView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
self.mapView.layoutIfNeeded()
})
}
此代码将我的mapView高度更改为UIScreen Height,而没有2秒的调整大小动画。