登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

iOS 一个可滑动缩放的轮播图

[复制链接]
来自: 张雨露Main 分类: iOS精品源码 上传时间: 2017-6-9 16:12:36
Tag:

项目介绍:

为了做到这个效果没少走弯路,之前一直使用TableViewHeaderView来做这个,尝试了半天,结果不行。后来去看百度中一张的下拉放大怎么实现的。看到别人使用contentInset....哎、恍然大悟!

写完后才发现,原来并不是想象的那么难嘛!下面说几个注意的点。当然,我已经封装好了。你只需要不多的代码就能搞定啦!有兴趣的朋友去我的GitHub下载地址就行啦,喜欢给个Star~

首先,想要下拉缩放上面的轮播图,你得把滑动的Offset传给轮播图。

 //告诉dragView表格滑动了
    CGFloat offset = scrollView.contentOffset.y + kHeaderHeight;
    [self.dragView dragViewWithOffset:offset];

我们进入这个方法看下做了怎么样的处理

#pragma mark -- 滚动偏移量
- (void)dragViewWithOffset:(CGFloat)offset {
    if (offset < 0) {
        NSDictionary *dic = @{@"offset" : [NSString stringWithFormat:@"%f",offset]};
        [[NSNotificationCenter defaultCenter] postNotificationName:@"changeSize" object:nil userInfo:dic];
        //更新layout
        CGSize size = self.layout.itemSize;
        size.height = self.initHeight - offset ;
        self.layout.itemSize = size;
        //更新self
        self.height = self.initHeight;
        self.y = 0;
        self.height = self.initHeight - offset;
    }else {
        self.y = 0;
        CGFloat minOffset = self.height;
        self.y = minOffset > offset ? - offset : - minOffset;
    }
    self.collectionView.height = self.height;
    self.pageControl.y = self.height - kPageControH;
}

根据偏移量修改轮播图的height。当偏移量<0的时候,也就是向上拖表格,这时候轮播图的Cell大小不再合适当前视图。发个消息告诉cell。改变imageView的size

#pragma mark -- set methed

- (void)setImageURL:(NSString *)imageURL {

    NSURL *dataUrl = [NSURL URLWithString:imageURL];
    [self.imageView sd_setImageWithURL:dataUrl placeholderImage:[UIImage imageNamed:@"pageOther.png"]];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(zoomScale:) name:@"changeSize" object:nil];
}

- (void)zoomScale:(NSNotification *)notification {
    NSDictionary *dic = notification.userInfo;
    CGFloat offset = [dic[@"offset"] floatValue];
    self.imageView.size = CGSizeMake(self.width, self.height - offset);
}

在设置图片URL的时候,正好为每个cell都注册一个通知。接到这个通知修改size。这样就做到了。轮播图和cell内容都是一样大小的了。

至于轮播图的实现我就不多说了。

另外,我加入了定时器,自动滚动,为了方便解决循环引用我使用了HWWeakTimer三方。代码很少,但是效果不错也很方便。

关于导航栏和状态栏的动态显示问题,原本我自己写了一套,是放在轮播图中的,但是我觉得放进去不好,耦合性差,如果有人不想改,也许就得修改我的代码了。因此我拆到外面了,修改为使用GKFadeNavigationController这个三方。你只需要继承他的导航控制器,再写一些代码就行了。(我的Demo就是在故事版中继承了这个控制器)
iOS技术交流群:511860085 欢迎加入!

封面。

394AF221-A512-4F3F-91A7-CAE0009D001D.png
|10 [/pan]

相关源码推荐:

我来说两句
*滑动验证:
所有评论(228)
kengsir 2017-6-13 10:21:50
学习...学习...
回复
hellokenken 2017-6-13 10:21:55
帮帮顶顶!!
回复
AlonMessi 2017-6-13 10:22:16
帮帮顶顶!!
回复
phoiu 2017-6-13 10:22:20
code4app确实是个好地方,必须支持~
回复
BlueManlove 2017-6-13 10:24:28
写的真的很不错
回复
littleRed 2017-6-13 10:24:52
感谢分享,code4app有你更精彩
回复
code4app热心网友 2017-6-13 10:40:41
感谢分享,Code4App有你更精彩:)
回复
code4app热心网友 2017-6-13 14:07:38
楼主威武啊,Code4App有你更给力!
回复
code4app热心网友 2017-6-13 14:08:58
很给力,Code4App有你更精彩!
回复
提取码:  下载次数:213 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
2285 0 213
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表