CRChecker 提供了另一种检查程序是否存在循环引用的方法,以往,我们需要使用Leaks工具检测此类问题,但实际使用起来,十分困难。本工具使用的是Method Swizzling的方式,对init和dealloc方法替换,以检查对象的生成、销毁计数的方法进行循环引用探测。
测试环境:Xcode 6.0,iOS 5.0以上
该项目是一个菜单按钮,点击红色按钮,弹出3个可选菜单,再次点击收回菜单,并带有流畅的弹动效果。
测试环境:Xcode 6.0,iOS 7.0以上
10秒钟快速集成下拉刷新和上拉加载更多(论坛会员949977202)
10秒钟快速集成下拉刷新和上拉加载更多刷新控件。
测试环境:Xcode 6.0,iOS 6.0以上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
// 创建图片多选控制器
PickerViewController *pickerVc = [[PickerViewController alloc] init];
// 默认显示相册里面的内容SavePhotos
PickerVc.status = PickerViewShowStatusSavePhotos;
// 选择图片的最小数,默认是9张图片最大也是9张
pickerVc.minCount = 4;
[self presentViewController:pickerVc animated:YES completion:nil];
// block回调或者代理
// 用block来代替代理
pickerVc.delegate = self;
/**
*
传值可以用代理,或者用block来接收,以下是block的传值
__weak typeof(self) weakSelf = self;
pickerVc.callBack = ^(NSArray *assets){
weakSelf.assets = assets;
[weakSelf.tableView reloadData];
};
*/
// 代理回调方法
- (void)pickerViewControllerDoneAsstes:(NSArray *)assets{
self.assets = assets;
[self.tableView reloadData];
}
// 图片游览器
ZLPickerBrowserViewController *pickerBrowser = [[ZLPickerBrowserViewController alloc] init];
// 传入点击图片View的话,会有微信朋友圈照片的风格
pickerBrowser.toView = cell.imageView;
// 数据源/delegate
pickerBrowser.delegate = self;
pickerBrowser.dataSource = self;
// 是否可以删除照片
pickerBrowser.editing = YES;
// 当前选中的值
pickerBrowser.currentPage = indexPath.row;
// 展示控制器
[pickerBrowser show];
#pragma mark - 自定义动画
// 你也可以自定义动画
// 参考BaseAnimationView
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UIView *boxView = [[UIView alloc] init];
boxView.backgroundColor = [UIColor redColor];
NSDictionary *options = @{
UIViewAnimationInView:self.view,
UIViewAnimationToView:boxView,
};
[ZLAnimationBaseView animationViewWithOptions:options animations:^{
// TODO .. 执行动画时
} completion:^(ZLAnimationBaseView *baseView) {
// TODO .. 动画执行完时
}];
}
|
多行action sheet,支持带标题和不带标题两种形式,并且可横向滚动。
测试环境:Xcode 6.0,iOS 6.0以上