在项目里遇到的一点坑分享给需要的人
界面.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))];
}
最后在弹出视图前用这个方法设置缩放点(缩放点位置不会的可以回复或者百度)
如果分享有用谢谢给个赞,随时接受大神的指点~
网友评论