iOS开发随笔iOS Developer

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

2016-12-07  本文已影响45人  _Comma

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

界面.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))];
}

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

上一篇下一篇

猜你喜欢

热点阅读