1.先看看試效果圖
Untitled11卡片動畫.gif
卡片其實是利用坐標的移動,動畫來實現(xiàn),以及縮放率(下面先講解怎么去使用它)
1.首先把.pch 里面的(下面的放到你的工程里面的pch)
#import "CardHeader.h"
#define iPhone5AndEarlyDevice (([[UIScreen mainScreen] bounds].size.height*[[UIScreen mainScreen] bounds].size.width <= 320*568)?YES:NO)
#define Iphone6 (([[UIScreen mainScreen] bounds].size.height*[[UIScreen mainScreen] bounds].size.width <= 375*667)?YES:NO)
3.把下面的類導(dǎo)入工程
導(dǎo)入項目的類
4.在其他控制器跳轉(zhuǎn)到 JLCardViewController.h 控制器(數(shù)據(jù)都是服務(wù)器的數(shù)據(jù))
在跳轉(zhuǎn)JLCardViewController.h控制器之前的控制里面?zhèn)鲄?shù)(首先是圖片,其次是姓名,性別,手機號等等都可以傳)
定義4個存值的數(shù)組
//頭像
@property(nonatomic,strong) NSArray *arrryPicture;
//名字
@property(nonatomic,strong) NSArray *arrryName;
//性別
@property(nonatomic,strong) NSArray *arrrysex;
//手機號
@property(nonatomic,strong) NSArray *arrryphone;
當然在JLCardViewController.h控制器里面我也進行了數(shù)組接收這些值
調(diào)到控制器的方法走下面的(數(shù)組里面的值都是網(wǎng)絡(luò)請求回來的)
JLCardViewController *jLCardViewController = [JLCardViewController new];
//圖片
jLCardViewController.pictureArray = _arrryPicture;
//名字
jLCardViewController.nameArray = _arrryName;
//電話號碼
jLCardViewController.phoneArray = _arrryphone;
//性別
jLCardViewController.sexArray = _arrrysex;
[self.navigationController pushViewController:jLCardViewController animated:YES];
5.在 JLCardViewController里面賦值以及進行展示和操作
在229行進行跳轉(zhuǎn)(里面有方法的執(zhí)行),我采用的是block 進行傳值
在這里給大家普及一下block
常用的方法(講解兩種)
大家要防止循環(huán)引用(Wself這個名字自己定義)
__weak typeof(self) Wself = self;
- (1) 方法調(diào)用block
1.在.h里面(建立吧bock)和設(shè)置block的方法
typedef void(^BLOCK)(NSString *name);
-(void)setBlock:(BLOCK)block;(在.m屬性需要實現(xiàn))
2.在.m里面進行實現(xiàn)block方法和屬性的轉(zhuǎn)換
先利用BLOCK設(shè)置一個屬性 BLOCK valueBlock;
-(void)setBlock:(BLOCK)block
{
valueBlock = block;
}
3.在點擊的調(diào)用的方法里面進行調(diào)用
valueBlock(這里放一個字符串傳到外面);
4.在外面調(diào)用
[類的對象 setBlock:^(NSString *name) {
這里進行執(zhí)行block這個方法
}];
-
(2) 屬性調(diào)用block
1.在.h里面設(shè)置2個字符串 @property(nonatomic,strong) void(^guwen)(NSString *paGe,NSString *name); 2.在.m里面點擊調(diào)用 if (self.guwen) { self.guwen(pageNumber,self.nameLabel.text); } 3.在外面把值取出來 利用這個類的對象進行調(diào)用 累的對象.guwen = ^(NSString *paGe,NSString *name){ 在此進行調(diào)用傳值 };
6.還是講講咱們的卡片
-
卡片可左邊拖動默認不喜歡此人,向右喜歡此人(咱們重點講解點擊的事件)
JLCardViewController
其中80-84行代碼是我賦值的地方@"page":[NSString stringWithFormat:@"%d",i+1](存值) 在JLDragCardView.m里面進行取值(獲取自己點擊的是第幾張:把這個頁碼傳到外面去進行跳轉(zhuǎn)) pageNumber = [NSString stringWithFormat:@"%@",self.infoDict[@"page"]];
最后在JLCardViewController 里面的第231行進行實現(xiàn)點擊的方法(跳轉(zhuǎn)或者其他的設(shè)置)
7.下最后給大家4個demo(前兩個本人親自在此封裝的)
1.網(wǎng)絡(luò)數(shù)據(jù)的demo
2.本地數(shù)據(jù)的demo
3.其他人的卡片
4.無規(guī)則的卡片
8.下面里面的小方法
<1>.屏幕判斷
#define iPhone5AndEarlyDevice (([[UIScreen mainScreen] bounds].size.height*[[UIScreen mainScreen] bounds].size.width <= 320*568)?YES:NO)
#define Iphone6 (([[UIScreen mainScreen] bounds].size.height*[[UIScreen mainScreen] bounds].size.width <= 375*667)?YES:NO)
- 大家路過的點個贊,謝謝