我正在尝试使用以下代码获取窗口基本坐标系中所有UITabBar子视图的中心点。
func getHighlightLocations() -> [CGPoint] {
var cgpointArray = [CGPoint]()
self.tabBar.subviews.foreach {
let point = $0.convert($0.center, to: nil)
cgpointArray.append(point)
}
return cgpointArray
}
我遇到的问题是返回的坐标落在设备屏幕之外
po cgpointArray
▿ <Array<CGPoint>>
▿ some : 6 elements
▿ 0 : (252.0, 123.3)
- x : 252.0
- y : 123.3
▿ 1 : (207.0, 844.0)
- x : 207.0
- y : 844.0
▿ 2 : (54.0, 828.5)
- x : 54.0
- y : 828.5
▿ 3 : (261.5, 828.5)
- x : 261.5
- y : 828.5
▿ 4 : (675.5, 828.5)
- x : 675.5
- y : 828.5
▿ 5 : (468.0, 828.5)
- x : 468.0
- y : 828.5
我该怎么办??,为什么不返回点位于窗口设备屏幕内。
答案 0 :(得分:3)
我相信您想从标签栏视图转换 ... ...因此,请尝试如下操作:
class MyTabBarController: UITabBarController {
func getHighlightLocations() -> [CGPoint] {
var cgpointArray = [CGPoint]()
tabBar.subviews.forEach {
let point = tabBar.convert($0.center, to: nil)
cgpointArray.append(point)
}
return cgpointArray
}
}
对于3项标签栏,我得到了这个结果(第一点是来自标签栏的背景视图):
[(187.5, 642.5), (62.5, 643.0), (187.5, 643.0), (312.5, 643.0)]