博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
仿知乎拖动广告的实现iOS
阅读量:6294 次
发布时间:2019-06-22

本文共 2133 字,大约阅读时间需要 7 分钟。

实现过程

错误方向

一开始打算在使用tableview的cell中加载scrollview实现,然后发现非常吃内存,而且无法实时变化,背景图片每次在拖动结束后才会改变,尽管方法实现在scrollViewDidScroll内,依然毫无卵用,遂毙了

正确方向-目前

将图片设置在self.view上后添加tableview

self.bkimv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"001"]];        self.originalHeight = self.bkimv.bounds.size.height*(ScreenWidth*IMAGESCALE/self.bkimv.bounds.size.width);    self.originalWidth = ScreenWidth*IMAGESCALE;        self.bkimv.bounds = CGRectMake(0, 0, self.originalWidth, self.originalHeight);复制代码
self.table.backgroundColor = [UIColor clearColor];    [self.view addSubview:self.table];复制代码

给予作为广告的cell一个背景色透明,使该cell能够显示图片

///根据编辑状态变化    if (model.isShow) {        self.contentView.backgroundColor = [UIColor clearColor];        self.nameLabel.text = @"";    }else {        self.contentView.backgroundColor = [UIColor whiteColor];        self.nameLabel.text = model.name;    }复制代码

scrollViewDidScroll内实现图片位置的计算

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    CGFloat w = self.originalWidth;//图片宽度    CGFloat h = self.originalHeight;//图片高度    CGFloat x = ScreenWidth/2;//中心点x坐标    CGFloat y = scrollView.contentOffset.y/2+self.originalHeight/3;//中心点y坐标    CGFloat scale = 1;//图片移动时比例变化率    if (ISSETSCALE) {        scale = (1-scrollView.contentOffset.y/ScreenHeight);    }        NSIndexPath *path= [NSIndexPath indexPathForRow:8 inSection:0];    CGRect rectInTableView = [self.table rectForRowAtIndexPath:path];    CGRect rectInSuperview = [self.table convertRect:rectInTableView toView:[self.table superview]];    //cell相对于屏幕位置        NSLog(@"%f %f %f",scale, y , rectInSuperview.origin.y);        self.bkimv.center = CGPointMake(x, y);    if (rectInSuperview.origin.y <= (y-h*scale/2)) {        //广告cell到达图片最上部时使图片与cell同时移动        self.bkimv.center = CGPointMake(x, rectInSuperview.origin.y+h*scale/2);    } else if ((rectInSuperview.origin.y + ADCellHeight) >= (y+h*scale/2)) {        //广告cell到达图片最底部时使图片与cell同时移动        self.bkimv.center = CGPointMake(x, (rectInSuperview.origin.y + ADCellHeight)-h*scale/2);    } else {        self.bkimv.bounds = CGRectMake(0, 0, w*scale, h*scale);    }}复制代码

OVER

顺便图片暴露死宅属性

不说了我的肥宅快乐水快没气了

转载地址:http://astta.baihongyu.com/

你可能感兴趣的文章
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
Storm中的Worker
查看>>