Swift 座標轉換的方法
Published in
Aug 15, 2019
好心人跟我說這個常用,要會哦!所以我自己研究一下了
首先,要先清楚UIKit座標系統(0,0)於左上角,CoreGraphics座標系統的(0,0)在左下角。
再來是
。frame:在superView的座標系位置(在父的座標系裡位置)。bounds:在自身座標系位置
以粉色View為例,
pinkView.frame 以父橘色座標系,會得到(10,10,5,5)
pinkView.bounds 以自身粉色座標系,會得到(0,0,5,5)
//(10,10,5,5) → (x, y, width, height)
了解以上,問題是如果想知道粉色在黃色爺爺的座標呢?
用frame可以知道在父的座標,但無法知道在黃色爺爺的座標系裡的位置,
故我們可以透過func轉換得知
。轉換新座標中矩形
func convert(CGRect, to: UIView?) -> CGRect故:let pinkFrame = pinkView.convert(pinkView.frame!, to: yellowView)
pinkFrame = (20,20,5,5)
方法是「子使用」,to:父, 獲取子在父的座標新座標矩形 = 子.convert(子.frame, to: 父)
func convert(CGRect, from: UIView?) -> CGRect故:let pinkFrame = yellowView.convert(pinkView.frame!, from: pinkView)
pinkFrame = (20,20,5,5)方法是「父使用」,from:子 ,獲取子在父的座標
新座標矩形 = 父.convert(子.frame, from: 子)
。轉換座標
func convert(CGPoint, to: UIView?) -> CGPoint
pinkFrame = (20,20)func convert(CGPoint, from: UIView?) -> CGPoint
pinkFrame = (20,20)
其實以上這幾種方法都通用,都可以得知粉色在黃色爺爺的座標系的座標或是矩形資訊,只要不要搞混填錯參數,基本上還滿容易理解的。
可以運算有效範圍或是移動元件等等。
可以幫我點個讚,或是分享一杯咖啡支持我。
。官方文件
。參考文件
https://www.twblogs.net/a/5b7e24622b71776838558a1b
。進階文件:
小飛俠:利用轉換座標的 convert function 判斷點選的 cell