我想在窗口座標系中獲取scrollView的原點。例如,目前,scollView的原點是(0,51)。但在窗口座標系中,它應該是51 + 44(導航欄高度)+20(狀態欄高度)= 115。在窗口座標系中,scrollView.frame.origin應該是(0,115)。我嘗試使用convertPoint:方法,但有時會得到(0,51)或(0,0)。請爲此提供解決方案。謝謝將UIView原點轉換爲其窗口座標系
回答
我試着用TechZen解決方案但無濟於事。我沒有轉換scrollView的原點,而是使用此代碼[self.view convertPoint:endCentre fromView:[UIApplication sharedApplication].keyWindow]
將AppleDocument UIWindow class Reference引用並將鍵盤的endCenter轉換爲我的視圖的座標系。這段代碼起作用,因此解決了我的問題。 但是,問題仍然是爲什麼它沒有給出scrollView.origin.So的適當座標,基本上我通過轉換鍵盤endcenter而不是scrollView.origin得到了解決方法。哦,我正在做所有這些工作,以便在鍵盤出現在屏幕上時計算我的scrollView的新高度。所以,如果有人有解決這個問題或更好的解決方案,請讓我們所有人知道。
這聽起來像你沒有轉換適當的意見。視圖的框設置爲它的上海華盈,而不是它自己的內部座標,所以如果你想轉換一個視圖窗口座標原點,你就需要使用上海華盈的座標:
[[self superview] convertPoint:self.frame.origin toView:theWindow];
然而,將視圖本身的零點轉換到窗口更加簡單。這兩段代碼是等價的,所以根本不需要使用原點。
[self convertPoint:CGPointZero toView:theWindow];
請注意,這些功能只會在視圖控制器完成子視圖佈局後才起作用。所以,如果你想,當視圖加載,你可以使用viewDidLayoutSubviews/viewDidAppear,但不是在viewDidLoad中/ viewWillAppear中等等
此代碼爲我工作:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGPoint originInSuperview = [self.view.superview convertPoint:CGPointZero fromView:self.scrollView];
}
雨燕2.1:
在viewDidAppear(否則元素還不分層)您的ViewController的:
var yourFrame = yourScrollView.convertRect(yourScrollView.frame, toView: self.view)
//PRINT THE WHOLE RECT
print(yourFrame)
//PRINT A DETAILED VERSION OF THE FRAME, ALSO CAN PERFORM CALCULATION BETWEEN THE RECT PARAMETERS TO GET , FOR EXAMPLE, WIDTH POINT IN THE SUPERVIEW:
print("X: \(yourFrame.origin.x) Y: \(yourFrame.origin.y) WIDTH: \(yourFrame.width) HEIGHT: \(yourFrame.height)")
在Swift 3中: var yourFrame = yourScrollView.convertRect(yourScrollView.frame,to:self.view) – Medhi 2016-10-26 10:02:24
- 1. 將CGPoint從UIView座標系轉換爲CALayer座標系
- 2. 將屏幕鼠標座標轉換爲窗口座標
- 3. 在OpenGL中將窗口座標轉換爲軸座標
- 4. Python Tkinter將畫布座標轉換爲窗口座標
- 5. 如何將窗口的座標轉換爲控制座標
- 6. 如何將窗口座標轉換爲2D OpenGL ES座標?
- 7. 將圖片座標轉換爲窗口座標
- 8. 將UIView座標轉換爲橫向
- 9. 將給定點從窗口的基本座標系轉換爲屏幕座標系
- 10. 將屏幕座標轉換爲UIView本地點
- 11. 如何將ContextMenuEventArgs光標位置轉換爲窗口座標
- 12. Math:將座標系轉換爲其他系統
- 13. 將座標轉換爲旋轉座標系
- 14. 如何將窗口座標轉換爲標準化的設備座標?
- 15. 將座標系轉換爲遊戲板
- 16. 將2D窗口點轉換爲3D點
- 17. 將座標從event.offsetX和event.offsetY轉換爲webGL原生座標
- 18. MonoTouch/MonoDroid - 將原始觸摸座標轉換爲屏幕座標
- 19. 將滾動視圖框架轉換爲窗口座標
- 20. 將屏幕轉換爲WPF座標而不顯示窗口
- 21. 將點座標轉換爲圖像
- 22. 將矩形點轉換爲極座標
- 23. SpriteKit座標系原點
- 24. 將視圖端口座標轉換爲實際圖像座標
- 25. 將座標轉換爲另一個座標系
- 26. 將極座標圖像轉換爲直角座標系
- 27. 將畫布座標系轉換爲OpenGLES 2.0座標
- 28. 將座標轉換爲像素座標
- 29. 更改座標原點在UIView的
- 30. 如何將頂點座標轉換爲屏幕像素座標?
斯威夫特版本向下跌破 – 2015-11-23 19:58:26