将坐标点转换为视点的问题

Posted

技术标签:

【中文标题】将坐标点转换为视点的问题【英文标题】:issues converting coordinate point to view point 【发布时间】:2016-12-15 05:19:00 【问题描述】:

基本上我一直在使用坐标点,我也更喜欢使用它,因为左下角是原点。我找到了我想使用的以下代码。它会在屏幕顶部创建一个矩形。

private let minimalHeight: CGFloat = 50.0
private let shapeLayer = CAShapeLayer()
// MARK: -
override func loadView() 
  super.loadView()

  shapeLayer.frame = CGRect(x: 0.0, y: 0.0, width: view.bounds.width, height: minimalHeight)
  shapeLayer.backgroundColor = UIColor(red: 57/255.0, green: 67/255.0, blue: 89/255.0, alpha: 1.0)
  view.layer.addSublayer(shapeLayer)

  view.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "panGestureDidMove:"))


// MARK: -
// MARK: Methods

func panGestureDidMove(gesture: UIPanGestureRecognizer) 
  if gesture.state == .Ended || gesture.state == .Failed || gesture.state == .Cancelled 

   else 
    shapeLayer.frame.size.height = minimalHeight + max(gesture.translationInView(view).y, 0)
  


override func preferredStatusBarStyle() -> UIStatusBarStyle 
  return .LightContent

我想在屏幕底部有一个矩形,这样我就可以向上平移,所以我将shapeLayer.frame 更改为

shapeLayer.frame = view.convert(CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: minimalHeight), from: (view.window?.screen.coordinateSpace)!)

但是当我运行代码时,这一行给出了EXC_BREAKPOINT 错误。如何转换上述shapeLayer.frame 坐标点中所述的矩形?

更新

这是我得到的屏幕截图,shapeLayer.frame 位于屏幕顶部,但我希望它位于底部以便我可以向上平移。

【问题讨论】:

view.window?.screen.coordinateSpace)!更改为UIApplication.shared.delegate!.window!!.screen.coordinateSpace 【参考方案1】:

(view.window?.screen.coordinateSpace)! 导致问题。

(view.window?.screen.coordinateSpace)! 更改为UIApplication.shared.delegate!.window!!.screen.coordinateSpa‌​ce

【讨论】:

谢谢,这已经解决了错误,但我认为我的坐标应该将矩形 (shapeLayer.frame) 从在屏幕顶部创建到底部?为什么它仍然在顶部,我错过了什么? 可以添加截图吗 shapeLayer.frame = CGRect(x: 0.0, y: view.bounds.height-minimalHeight, width: view.bounds.width, height: minimalHeight) 会起作用。 shapeLayer.frame 现在在按钮上,但我在panGestureDidMove(gesture: 中的shapeLayer.frame.size.height = minimalHeight + max(gesture.translationInView(view).y, 0) 似乎不起作用。它没有响应平移 我想我应该问一个不同的问题

以上是关于将坐标点转换为视点的问题的主要内容,如果未能解决你的问题,请参考以下文章

[Astar_algorithm03]随机障碍点生成以及坐标点传递方法

地图坐标点转换成布局坐标点

如何计算两个GPS坐标点的距离?

基于笛卡尔坐标点积的算法计算地理距离

Python,将坐标度转换为小数点

怎么计算2个坐标点的距离?