将坐标点转换为视点的问题
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.coordinateSpace
【讨论】:
谢谢,这已经解决了错误,但我认为我的坐标应该将矩形 (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)
似乎不起作用。它没有响应平移
我想我应该问一个不同的问题以上是关于将坐标点转换为视点的问题的主要内容,如果未能解决你的问题,请参考以下文章