龙8国际_www.long8.vip|龙8国际娱乐app 当前位置:首页>龙8国际_www.long8.vip|龙8国际娱乐app>正文

龙8国际_www.long8.vip|龙8国际娱乐app

发布时间:2019-03-23

原标题:iOS开发中获取视图在屏幕上显示的位置

他也没有怀疑刘皓动手脚,虽然说他是大陆的巅峰战力,但是不说刘皓,单单就是红衣一个就能杀了他,用不了在他的身上下什么手脚,而且纵横夜阑大陆那么多年这点眼力和经验还是有的,他也能感觉到这一颗丹药里面的一些秘闻,因此放心得很。

龙8国际手机登录

得到提示的不只是唐三,海神斗罗波赛西以及海神七圣柱守护斗罗都得到了同样的提示。七圣柱守护斗罗呆住了,而波赛西却眉头紧皱地动了,红色的身影以前所未有的速度朝着山下的方向扑去。
李连长放开了路障,让那些难民老百姓速速通过,那些老百姓看得清清楚楚,完整目睹了刚才的那个情形,顿时欢呼起来,哭号声变成了欢呼声,他们知道,只要过了这个口子,前面就是江边码头了,已经有许多女学生和附近防空洞的老百姓坐船渡过江跑出去了,而护送他们渡江的正是八卦洲那边的独立师加强团的部队,当然还有驻守挹江门这边的税警总团的部队!

“提炼。“刘皓按下激动的心情,尽量让自己的心很平静,运转查克拉提炼的印结,一开始是不得要领,不过能清晰看到自己体内一切变化的刘皓很快就掌握住了要门,并且找到了效率最高最快的方法进行提炼,很快十分微弱的光芒在自己全身各处的细胞之中缓缓的被抽出。

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

最近公司的项目中有一个需求,所使用的层级就是一个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 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
        }
    }
}

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

button.zhmfPositionInScreen()

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

iOS开发,专注swift,如果想交流,随时欢迎,期待一起进步!!!

编辑:石邓

发布时间:2019-03-23 08:25:55

当前文章://d001s.html

钱柜娱乐手机版网页 龙八娱乐手机下载安装 亚洲城ca8w8手机版 优卡特手机客户端 

责任编辑:伯扁