iOS开发之怎样获取视图在屏幕中显示的位置

  介绍

小编给大家分享一下iOS开发之怎样获取视图在屏幕中显示的位置,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强>前言

相信大家在iOS开发中经常会遇到一个问题,例如,点击一个按钮,弹出一个遮罩层,上面显示一个弹框,弹框显示的位置在按钮附近。如果这个按钮的位置相对于屏幕边缘的距离是固定的,那就容易了,可以直接写死位置。可是,如果按钮是在UITableView的细胞上呢?随着UITableView的滚动,按钮可能在顶部,也可能在底部,还可能在中间,左侧,右侧都有可能,那么,这个时候,怎么去计算按钮所在的位置呢?如果按钮所在的UITabelView是在另外一个UIScrollView的一个细胞上呢?如果外面再有一个滚动层呢?这种布局确实很复杂。

最近公司的项目中有一个需求,所使用的层级就是一个UITableView中嵌套了一个UITableView和一个UICollectionView,而且还有一个点击按钮,效果就类似于头条资讯列表的小叉号,点击在按钮旁边弹出一个视图,对资讯进行屏蔽等操作。我在点击按钮的时候弹出一个顶级的遮罩层,在遮罩上面增加了一个操作的区域,但是,操作区域的位置需要根据按钮的位置进行确定,所以,花了点时间写了个方法,用来找到按钮在屏幕上的位置,相对于屏幕来说的;

<强>方法如下:

其实代码并不多,只需要写一个UIView的扩展方法就行

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 作为?,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才能   ,}   ,}   }

获取视图在屏幕上位置的扩展方法已经写好了,只需要在使用的使用调一下就好了

button.zhmfPositionInScreen ()

虽然代码量不大,但当时也花了一点时间想逻辑,没有去百度等搜索,能自己写的,还是自己花时间想吧,不然,脑子懒了,就真的只能是码农了。

<强> ios获取控件相对屏幕的位置

需要获取的对象为view1,则该视图相对屏幕的位置可使用下面方法实现:

UIWindow  *,窗口=[[[UIApplication  sharedApplication],代表],窗口);   ,CGRect 矩形=[view1  convertRect:, view1.bounds 要查看:窗口),

看完了这篇文章,相信你对“iOS开发之怎样获取视图在屏幕中显示的位置”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

iOS开发之怎样获取视图在屏幕中显示的位置