【问题标题】:Changing frame of a UIView is not working fine更改 UIView 的框架无法正常工作
【发布时间】:2017-10-16 10:07:41
【问题描述】:

我有一个小问题,我不知道为什么会这样。

我有一个自定义的 NavigationView。我的要求是在点击谷歌地图时更改此 NavigationView 的框架。我的意思是我必须用动画显示和隐藏(切换)帧。

下面是我的代码:-

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {

    if false == boolTapOnNavigationView {

        UIView.animate(withDuration: 0.5, animations: {

               self.viewNavigation.frame = CGRect(x: 0, y: -100, width: self.view.frame.width, height: 60)
               //self.viewNavigation.isHidden = true
        })
        boolTapOnNavigationView = true
    }

    else {

        UIView.animate(withDuration: 0.5, animations: {
            //self.viewNavigation.isHidden = false
            self.viewNavigation.frame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: 60)
        })
        boolTapOnNavigationView = false
    }
}

在我的代码中,您可以看到我有一个名为“boolTapOnNavigationView”的标志。

如果我点击谷歌地图,该代码工作正常,但是当我点击同一个 ViewController 中的任何其他按钮时,该 NavigationView 的框架会自动反映。

【问题讨论】:

  • 不清楚你的问题到底是什么!您是否已将委托添加到视图控制器mapView.delegate = self?或者您能说一下您在哪里面临复杂性?
  • 是 mapView.delegate = 自添加。我的问题是我在谷歌地图顶部有一个自定义导航视图。我想在点击谷歌地图时更改框架。谢谢
  • 只是尝试更改地图视图框架并检查是否存在问题?
  • 是的,我更改了 mapView 框架,mapview 也有同样的问题。
  • 我认为你遗漏了一些东西,但不是你给定的 sn-p。看看这里:github.com/GolapHasan/Google-Map-Demo

标签: ios swift animation uiview frame


【解决方案1】:

你应该改变中心而不是框架

   func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {

        if false == boolTapOnNavigationView {

            UIView.animate(withDuration: 0.5, animations: {

                   self.viewNavigation.centre.y = self.viewNavigation.centre.y - 100
                   //self.viewNavigation.isHidden = true
            })
            boolTapOnNavigationView = true
        }

        else {

            UIView.animate(withDuration: 0.5, animations: {
                //self.viewNavigation.isHidden = false
                self.viewNavigation.centre.y = self.viewNavigation.centre.y + 20
            })
            boolTapOnNavigationView = false
        }
    }

【讨论】:

  • 没关系。但同样的问题就像如果会点击任何其他按钮然后框架会自动反射。
  • 在图片中您可以看到一个绿色按钮。首先,当我点击地图视图时,框架工作正常,但是当我点击绿色按钮时,框架正在下降。框架没有动作。
  • 你的按钮通过点击到地图视图
  • 按钮点击动作中没有任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多