pageguo / newpagedflowview Goto Github PK
View Code? Open in Web Editor NEW电影票卡片式无限自动轮播图
电影票卡片式无限自动轮播图
//点击了cell
- (void)singleCellTapAction:(UIGestureRecognizer *)gesture {
if ([self.delegate respondsToSelector:@selector(didSelectCell:withSubViewIndex:)]) {
[self.delegate didSelectCell:gesture.view withSubViewIndex:gesture.view.tag];
}
}
这里只能监听中间的图片,如果我想监听旁边两个图片呢?
代码是这样写的:在 viewDidLoad 中初始化:
self.imageArray = [NSMutableArray array]; // 这个存储的是图片的 url 地址
self.pageFlowView = [[NewPagedFlowView alloc] initWithFrame:CGRectMake(0, 8, WW, (WW - 84) * 9 / 16 + 24)];
self.pageFlowView.backgroundColor = [UIColor whiteColor];
self.pageFlowView.delegate = self;
self.pageFlowView.dataSource = self;
self.pageFlowView.minimumPageAlpha = 0.4;
self.pageFlowView.minimumPageScale = 0.85;
//提前告诉有多少页(由于是从网络请求图片,我注释掉)
// self.pageFlowView.orginPageCount = self.imageArray.count;
self.pageFlowView.isOpenAutoScroll = YES;
/****************************
使用导航控制器(UINavigationController)
如果控制器中不存在UIScrollView或者继承自UIScrollView的UI控件
请使用UIScrollView作为NewPagedFlowView的容器View,才会显示正常,如下
*****************************/
UIScrollView *bottomScrollView = [[UIScrollView alloc] initWithFrame:self.pageFlowView.bounds];
[bottomScrollView addSubview:pageFlowView];
// 我是放到 Tableview 的头部上
self.tableView.tableHeaderView = bottomScrollView;
实现其代理和数据源方法:
- (NSInteger)numberOfPagesInFlowView:(NewPagedFlowView *)flowView {
return self.imageArray.count;
}
- (UIView *)flowView:(NewPagedFlowView *)flowView cellForPageAtIndex:(NSInteger)index{
PGIndexBannerSubiew *bannerView = (PGIndexBannerSubiew *)[flowView dequeueReusableCell];
if (!bannerView) {
bannerView = [[PGIndexBannerSubiew alloc] initWithFrame:CGRectMake(0, 0, WW - 84, (WW - 84) * 9 / 16)];
bannerView.layer.cornerRadius = 4;
bannerView.layer.masksToBounds = YES;
}
//在这里下载网络图片
[bannerView.mainImageView sd_setImageWithURL:[NSURL URLWithString:self.imageArray[index]] placeholderImage:[UIImage imageNamed:@"01_January"]];
return bannerView;
}
同时,我在 viewDidLoad 中开始加载数据,当图片地址数组请求回来的时候,我把图片数组赋值给 self.imageArray,并且执行 pageFlowView 的 reloadData 方法,发现一运行就直接报错,指向这个语句:
NSParameterAssert(pageIndex >= 0 && pageIndex < [_cells count]);
请问一下是不是我用的时候姿势不对?求指导一下。
能否在代理里把用户点击的位置也传进去,广告统计方要求传入点击的位置。。。
实现点击的CGPoint
你好,我想问下一般情况下是没问题的,中间的图片居中,两边各漏出来一点图片,但是有场景会出现中间的图片不居中,左边或者右边跑到了显示范围之外,设置滚动的contentoffset有问题。具体还不能复现这个场景。
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, Width, 250)]; [self.tableView.tableHeaderView addSubview:pageFlowView];
或者
self.tableView.tableHeaderView = pageFlowView;
或者
UIScrollView *bottomScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, ZRScreenW, (ZRScreenW - 84) * 9 / 16 + 24)];
[pageFlowView reloadData];
[bottomScrollView addSubview:pageFlowView];
self.tableView.tableHeaderView = bottomScrollView;
卡片停止自动滚动效果之后,多滑动几次卡片,就会出现卡片重合的bug
很奇怪卡片一到中间就成了直角,你好 这是bug吗 能提供思路吗
当页面少于5个的时候 循环滚动会出现bug 导致部分页面消失
进入使用该框架第一次没事,退出,点几下别的或直接崩溃。。。报野指针错误!
解决方式:没有使用cell重用方法,暂时回避错误。
// PGIndexBannerSubiew *bannerView = [flowView dequeueReusableCell];
// if (!bannerView) {
PGIndexBannerSubiew *bannerView = [[PGIndexBannerSubiew alloc] init];
bannerView.tag = index;
bannerView.layer.cornerRadius = 9;
bannerView.layer.masksToBounds = YES;
// }
rt
和tableview一起使用会导致tableview不能滑动,咋解决呢
如果支持pod更新就完美了...
你好,这个轮播无论是自动轮播还是手动轮播,内存一直在增长。如果首页使用这个轮播,放一会就会卡的APP使用不了。。。。
cellForPageAtIndex:(NSInteger)index与didSelectCell:XXSubViewIndex:(NSInteger)subIndex
显示的图片index,与点击之后subindex的下标不一致,初步测试,只是第一张与第二张颠倒
轮播图在首页出现 ,在5s 上面 如果连续使用APP 1个小时 左右 或者停留在这个页面 首页这个页面 不动 也是1个小时左右,人为的反向滑动 或者 正向滑动轮播图,会出现 卡顿的情况,或者 划不动的情况 在6p 或者 7 上目前出现这种情况的概率 ,很小 现在项目里用的是最新的 框架。。
如果是用两个tab,加上两个这种控件,使用网络加载图片的时候,第二个这种控件下载的图片,部分图片下载的图片,会一直显示不上去,除非重新生成这种控件才行,这个bug什么时候能解决
我的方法是:
在 layoutSubviews中添加一段
[_reusableCells removeAllObjects];
_visibleRange = NSMakeRange(0, 0);
// 添加 的是下面这个for循环
for (UIView *view in _cells) {
if ([view isKindOfClass:[UIView class]]) {
[view removeFromSuperview];
}
}
同时在改写:
然后在加载NewPagedFlowView的类旋转的方法中添加如下代码
只有一张图片时候,循环滚动有bug,会滚没了!希望一张图片时,关闭定时器,不要滚动!
还有能否添加给功能:非当前页可以设置显示大小,比如跟当前页一样大小(之间有间距)。
minimumPageScale属性设置很小的时候(0.1)当前页显示不正常,时大时小。
自定义PGIndexBannerSubiew上,添加了一个阴影圆角渐变button,从最后一张滑到第一张时,button会向右抖动下,请问这是什么原因造成的,请指教下。
切换rootViewController会导致EXC_BAD_ACCESS
_pageFlowView.isCarousel = NO;
_pageFlowView.isOpenAutoScroll = YES;
这样设置的话就不会自动滚动了
使用水平滚动时,如果轻触快速测滑,会出现事件丢失的情况。不知道怎么处理?
cell = [_dataSource flowView:self cellForPageAtIndex:pageIndex % self.orginPageCount];
Thread 1: EXC_BAD_ACCESS (code=1, address=0x18)
调用reloadData会引起某两页连接在一起,并有叠加的问题。例如在demo viewDidLoad 中加入:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(15.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[pageFlowView reloadData];
});
添加一句话:
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
我想添加一个删除的操作,但是已删除刷新就滚到了第一页, 能做到刷新之后是相邻页面么?
时不时的错误,内存溢出的错误,以下是错误列表 1,-[_CTNativeGlyphStorage flowView:cellForPageAtIndex:]: unrecognized selector sent to instance 0x101634ad0
(null)
2,Application received signal SIGSEGV
举例:采用xib布局, 通过在一个cell上放一个view 继承自 NewPagedFlowView ,,上下左右约束都设为0 如果这个xib 的可视界面的宽度为500 那么你的 NewPagedFlowView竟然在任何机型上都是按照500来计算的,,这个很坑啊,,用该是采用 这个cell在具体机型上实际的宽度计算呀
如果中间那个cell尺寸为 100x100 的,我想一个圆形的视图, cornerRadius=50的话,其他就变形了
而且,你的### 后面加个空格,字体就变大了 = =!
还有一个问题就是, 你把那两个实现文件 编辑一个头文件,类似于AFNetworking.h文件一样,方便别人导入
能否灵活点添加个方法,就是等于1张图片的时候,只显示一张。以及是否循环。。
这个应该不支持类似的cell的重用
屏幕中间的view可以点击,两侧的View不能点击,我看了代码好像是超出父类的范围
滚动图左右两边的小图,怎么让它变暗一点? 是改变这个 minimumPageAlpha 吗
大神,minimumPageAlpha 好像没能让非当前页的透明改变啊
master,怎么给每个page加阴影呢?设置subview的阴影没有效果,是我加的位置不对还是怎么了?
将- (void)startTimer 和 - (void)stopTimer 稍作处理
看您的代码NewPagedFlowView 里的subviewClass是写在里面的?如果一行滚动里面区分不同的viewUI怎么解决?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.