extension UIView {
func zhmfPositionInScreen() -> CGPoint {
/// 先判断是否有父视图,如果没有父视图,直接返回视图的位置就行
if let superView = self.superview {
/**
判断父视图是否是UIScrollView或者继承自UIScrollView
先使用视图在屏幕上的位置使用视图的位置与父视图的位置X与Y分别相加
如果父视图不是UIScrollView并且不继承自UIScrollView,则直接返回结果
如果父视图是UIScrollView或者继承自UIScrollView
还需要分别减去UIScrollView的scrollViewOffset.x和scrollViewOffset.y,然后返回结果
*/
if let scrollView = superView as? UIScrollView {
let position = CGPoint.init(x: self.frame.origin.x, y: self.frame.origin.y)
let superPosition = superView.zhmfPositionInScreen()
let scrollViewOffset = scrollView.contentOffset
return CGPoint.init(x: superPosition.x + position.x - scrollViewOffset.x , y: superPosition.y + position.y - scrollViewOffset.y)
} else {
let superPosition = superView.zhmfPositionInScreen()
let position = self.frame.origin
return CGPoint.init(x: superPosition.x + position.x, y: superPosition.y + position.y)
}
} else {
return self.frame.origin
}
}
}
获取视图在window上的位置
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
- 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...