在点击时调整MapView的大小

时间:2019-02-18 15:58:32

标签: ios swift xcode animation

我在情节提要中有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()
    })

1 个答案:

答案 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秒的调整大小动画。