美文网首页iOS开发随笔iOS Developer
做添加显示视图(缩放显示)遇到的一点坑

做添加显示视图(缩放显示)遇到的一点坑

作者: _Comma | 来源:发表于2016-12-07 12:18 被阅读45次

    在项目里遇到的一点坑分享给需要的人
    先放一张图片再解释功能需求

    界面.png

    项目需要在点击tableview里的第几个cell的一个提示标示,然后以右下角为缩放点缩放的动画展示一个视图提示
    首先要或许这个点击的位置相对于当前视图的frame

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:3];
        CGRect rectIn = [self.tableView rectForRowAtIndexPath:indexPath];
        CGRect rect = [self.tableView convertRect:rectIn toView:[self.tableView superview]];
    

    这样得到的frame就是第三个section的一个行的frame,我们只需要里面的y就可以得到当前cell对应屏幕的y值了,当然这里会有一个问题就是tableview会滚动的问题,要解决这个问题只需要实现tableview滚动视图的代理就可以得到一个偏移量,这里我用一个属性**offy(CGFloat)**来储存

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
        self.offy = self.scrollView.contentOffset.y;
    }
    

    这样cell的 y = rect.orgin.y - self.offy
    然后就是视图右下角的绘画(这个可以查查资料),接下来就是展示视图
    由于我要的是缩放效果,所以要设置一个缩放点。按官方给的是这样设置

    view.layer.anchorPoint = CGPointMake(1,1); //1,1是最右下角,不知道的查查就知道了
    

    可是以上诉方式设置后没有效果,反而会使视图弹出的位置偏移掉,在搜索无果后请教了人才得以解决
    添加了一个uiview的分类里面添加一个方法重设anchorPoint

    - (void)setRepairAnchorPoint:(CGPoint)anchorPoint {
        CALayer *layer = [self layer];
        CGPoint oldAnchorPoint = layer.anchorPoint;
        [layer setAnchorPoint:anchorPoint];
        [layer setPosition:CGPointMake(layer.position.x + layer.bounds.size.width * (layer.anchorPoint.x - oldAnchorPoint.x), layer.position.y + layer.bounds.size.height * (layer.anchorPoint.y - oldAnchorPoint.y))];
    }
    

    最后在弹出视图前用这个方法设置缩放点(缩放点位置不会的可以回复或者百度)
    如果分享有用谢谢给个赞,随时接受大神的指点~

    相关文章

      网友评论

        本文标题:做添加显示视图(缩放显示)遇到的一点坑

        本文链接:https://www.haomeiwen.com/subject/ymudmttx.html