常用的小案例太多,一直存放在本地,有时间就把有用的上传一点
- QQPageViewController
用PageViewController实现的项目的分页tab显示,代码的侵入性太强,每次都拷贝粘贴太多代码,现在集中到一个文件里,方便调用
- 使用方法1
覆盖父类方法,设置数据源
- (NSMutableArray *)contentVCs{
NSMutableArray * _contentVCs = [super contentVCs]; //super
[_contentVCs addObject:[ZZKPage1VC new]];
[_contentVCs addObject:[ZZKPage2VC new]];
[_contentVCs addObject:[ZZKPage3VC new]];
return _contentVCs;
}
- (NSMutableArray *)tabTitles{
NSMutableArray * _tabTitles = [super tabTitles]; //super
_tabTitles =[@[@"参与",@"发布",@"收藏"] mutableCopy];
return _tabTitles;
}
- 使用方法2
viewDidLoad方法中在[super viewDidLoad]之前初始化数据源
self.tabTitles = [@[@"参与",@"发布",@"收藏"] mutableCopy];
[self.contentVCs addObject:[ZZKPage1VC new]];
[self.contentVCs addObject:[ZZKPage2VC new]];
[self.contentVCs addObject:[ZZKPage3VC new]];
[super viewDidLoad];
点击TextField弹出日期等选择看起来是个简单的工作,实际操作过程中实际上问题非常多,比如多个输入框的识别、和键盘处理的冲突、键盘状态的确定和取消。每个问题都很麻烦,每次做这个东西都让人头大。 这个问题的解决方案的代码侵入性非常高,几乎没有重用性。所以需要用更简单的办法.按理本来说这个问题应该用自定义控件的继承来解决的,可是用Category看起来更加简洁。这个案例里用一个单一的类别解决了这个问题。
- TextField+DatePicker类别导入之后,使用起来代码只有一行即可实现功能。同理你可以在此基础上实现性别、输入数字等其他功能
self.begin.datePickerInput = YES;
self.end.datePickerInput = YES;
Runtime的一些应用
网上找的一个标尺/刻度尺例子。为了便于使用,进行了cell改造
Cell使用方式
YSYRulerCell *cell=[tableView dequeueReusableCellWithIdentifier:[YSYRulerCell cellReuseIdentifier] forIndexPath:indexPath];
[cell initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, kRulerCellHeight-10) theMinValue:0 theMaxValue:100 theStep:2 theUnit:@"" theNum:5];
项目中使用的第三方的一个进度条,因为移动时缺乏动画效果,自己又重新手写了一个进度条。这个没有用的就传上来给需要的人
一个无限旋转动画,可控制其暂停、继续操作。 全部动画代码封装到一个类别UIImageView+Rotation.h中使用
单独封装成一个YSYNumberPickerView,使用覆盖数据源pickerDataSource,然后从resultValue获得选取的值
#import "YSYNumberPickerView.h"
@property(nonatomic,assign) NSInteger resultValue;
@property(nonatomic,strong) NSArray *pickerDataSource;
旋转和缩放动画都很简单,但是连续旋转和缩放动画的例子网上基本上就找不到了。没什么说的,放图看效果。
可控制的滚动图片,加一个NSTimer即可实现无限循环图片显示。已经封装成一个类。不支持自动布局方式。
从左到右流式动态显示图片。 UICollectionView是我最喜欢用的控件,用的太多,写的太也多,代码量太大,把它封装之后不需要一遍又一遍写UICollectionView了。 这是个通用控件,可以根据这个例子把Cell修改替换成你喜欢的任何样子。
@property (nonatomic, strong) NSArray *imageNames; //图片固定不变的数据源,图片名称数组
@property (nonatomic, strong) NSMutableArray *images; //图片不固定时的数据源,UIImage数组
@property (nonatomic, weak) id<YSYLineIconViewDelegete> lineIconViewDelegete; //点击代理
----
YSYLineIconView *lineView = [YSYLineIconView new];
lineView.imageNames = @[@"vision_wrong",@"vison_correct",@"vision_wrong",@"vison_correct",@"vision_wrong"];
lineView.lineIconViewDelegete = self;
[self.view addSubview:lineView];
[lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.leading.trailing.equalTo(self.view);
make.height.equalTo(@30);
}];