高仿探探的卡片视图切换效果,OC源代码免费下载

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看282 回复回复3 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 282|回复: 3
收起左侧

高仿探探的卡片视图切换效果,OC源代码免费下载

[复制链接]
1起来 发表于 2016-10-10 02:23:45 | 显示全部楼层 |阅读模式
快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑
1、效果图

探探卡片视图切换效果 1

高仿探探的卡片视图切换效果,OC源代码免费下载 - 敏捷大拇指 - 探探卡片视图切换效果 1


探探卡片视图切换效果 2

高仿探探的卡片视图切换效果,OC源代码免费下载 - 敏捷大拇指 - 探探卡片视图切换效果 2





2、主要代码



2.1、CHCardView.h

[Objective-C] 纯文本查看 复制代码
#import <UIKit/UIKit.h>
@class CHCardView, CHCardItemView;
@protocol CHCardViewDelegate <NSObject>
@optional
- (void)cardView:(CHCardView *)cardView didClickItemAtIndex:(NSInteger)index;
@end

@protocol CHCardViewDataSource <NSObject>
@required
- (NSInteger)numberOfItemViewsInCardView:(CHCardView *)cardView;
- (CHCardItemView *)cardView:(CHCardView *)cardView itemViewAtIndex:(NSInteger)index;
- (void)cardViewNeedMoreData:(CHCardView *)cardView;
@optional
// default is equal to cardView's bounds
- (CGSize)cardView:(CHCardView *)cardView sizeForItemViewAtIndex:(NSInteger)index;

@end

@interface CHCardView : UIView
@property (nonatomic, weak) id <CHCardViewDataSource> dataSource;
@property (nonatomic, weak) id <CHCardViewDelegate> delegate;

- (void)deleteTheTopItemViewWithLeft:(BOOL)left;
- (void)reloadData;
@end




2.2、CHCardView.m

[Objective-C] 纯文本查看 复制代码
- (void)reloadData {

    if (_dataSource == nil) {
        return ;
    }
    // 1. 移除
    [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    // 2. 创建
    _itemViewCount = [self numberOfItemViews];
    for (int i = 0; i < _itemViewCount; i++) {

        CGSize size = [self itemViewSizeAtIndex:i];

        CHCardItemView *itemView = [self itemViewAtIndex:i];
        [self addSubview:itemView];
        itemView.delegate = self;

        itemView.frame = CGRectMake(self.frame.size.width / 2.0 - size.width / 2.0, self.frame.size.height / 2.0 - size.height / 2.0, size.width, size.height);
        itemView.tag = i + 1;
        itemView.transform = CGAffineTransformMakeTranslation(self.frame.size.width +  500, 400);
        [UIView animateKeyframesWithDuration:0.15 delay:0.05 * i options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{
            CGAffineTransform scaleTransfrom = CGAffineTransformMakeScale(1 - 0.005 * (10 - i), 1);
            itemView.transform = CGAffineTransformTranslate(scaleTransfrom, 0, 0.5 * (10 - i));
        } completion:nil];
        itemView.userInteractionEnabled = YES;
        [itemView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestHandle:)]];
    }
}




2.3、具体调用代码

[Objective-C] 纯文本查看 复制代码
if (panGest.state == UIGestureRecognizerStateChanged) {

        CGPoint movePoint = [panGest translationInView:self];
        _isLeft = (movePoint.x < 0);

        self.center = CGPointMake(self.center.x + movePoint.x, self.center.y + movePoint.y);

        CGFloat angle = (self.center.x - self.frame.size.width / 2.0) / self.frame.size.width * 0.5;
        _currentAngle = angle;
        self.transform = CGAffineTransformMakeRotation(angle);

        [panGest setTranslation:CGPointZero inView:self];

    } else if (panGest.state == UIGestureRecognizerStateEnded) {

        CGPoint vel = [panGest velocityInView:self];
        if (vel.x > 400 || vel.x < - 400) {
            [self remove];
            return ;
        }
        if (self.frame.origin.x + self.frame.size.width > 100 && self.frame.origin.x < self.frame.size.width - 100) {
            [UIView animateWithDuration:0.3 animations:^{
                self.center = _originalCenter;
                self.transform = CGAffineTransformMakeRotation(0);
            }];
        } else {
            [self remove];
        }
    }





3、下载

项目地址:

游客,如果您要查看本帖隐藏内容请回复


个人主页:

游客,如果您要查看本帖隐藏内容请回复




都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 收起 理由
Anewczs + 10 发帖就是光荣,分享精神可嘉!.

查看全部评分

本帖被以下淘专辑推荐:

Ding 发表于 2016-10-10 08:44:31 | 显示全部楼层
我在GitHub上写过一个类似的,貌似比楼主这个更灵活,可以自定义层叠方向及相邻卡片距离:SwipeableCards
是Swift版,也有OC版的,在readme里能找到链接。
JoyceChu 发表于 2016-10-10 17:30:38 | 显示全部楼层
Ding 发表于 2016-10-10 08:44
我在GitHub上写过一个类似的,貌似比楼主这个更灵活,可以自定义层叠方向及相邻卡片距离:SwipeableCards
...

你们都很厉害!
linus 发表于 2016-10-12 23:22:14 | 显示全部楼层
Ding 发表于 2016-10-10 08:44
我在GitHub上写过一个类似的,貌似比楼主这个更灵活,可以自定义层叠方向及相邻卡片距离:SwipeableCards
...

你牛!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表