一. 用UICollectionView左右滑动式布局
- 效果图:
UI设计
2.主要功能点:
- 实现定时播放
- 重复播放
- 中间图片显示一定比例放大
3.主要功能代码:
代码语言:javascript复制- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *arr = [self getCopyOfAttributes:[super layoutAttributesForElementsInRect:rect]];
//屏幕中线
CGFloat centerX = self.collectionView.contentOffset.x self.collectionView.bounds.size.width/2.0f;
//刷新cell缩放
for (UICollectionViewLayoutAttributes *attributes in arr) {
CGFloat distance = fabs(attributes.center.x - centerX);
//移动的距离和屏幕宽度的的比例
CGFloat apartScale = distance/self.collectionView.bounds.size.width;
//把卡片移动范围固定到 -π/4到 π/4这一个范围内
CGFloat scale = fabs(cos(apartScale * M_PI/4));
//设置cell的缩放 按照余弦函数曲线 越居中越趋近于1
attributes.transform = CGAffineTransformMakeScale(1.0, scale);
}
return arr;
}
4.demo下载地址
二.两个不同APP之间的聊天功能
1.主要功能点:
- 不同APP之间
- 实现单聊
- 集成容云作为第三方选择
2.主要功能实现: 我们只需要申请一套 App Key / App Secrect,提供给两个 App 使用即可。上线前,您需要在开发者平台上填写这两个应用的包名(Bundle Identifier)即可。
代码语言:javascript复制 设置 [[RCIM sharedRCIM] setUserInfoDataSource:self];
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void(^)(RCUserInfo* userInfo))completion
{}
3.demo下载地址
三.照片中文字识别功能
1.效果图
设计需求
2.主要功能点:
- 百度智能云文字识别OCR
- 裁剪,识别,分享,旋转,重置,校对等功能
3.关键代码:
代码语言:javascript复制 //识别图片
[[AipOcrService shardService] detectWebImageFromImage:self.showImage
withOptions:nil
successHandler:_successHandler
failHandler:_failHandler];
4.demo下载地址
四.视频编辑
1.效果图
设计需求
2.主要功能点:
- 本地视频选择播放
- 裁剪,压缩,转换,弹幕等功能
3.关键代码:
代码语言:javascript复制//5.视频输出
self.outputURL = [NSURL fileURLWithPath: self.outPutPath];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:self.mixComposition presetName:self.presetName];
exporter.outputURL = self.outputURL;
exporter.videoComposition = self.videoComposition;
exporter.outputFileType = [self transOutPutFileType:fileType];
exporter.shouldOptimizeForNetworkUse = self.shouldOptimizeForNetworkUse;
[exporter exportAsynchronouslyWithCompletionHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (exporter.status == AVAssetExportSessionStatusCompleted) {
if (successBlock) {
successBlock(self.outputURL);
}
}else{
NSLog(@"exporter %@",exporter.error);
if (failureBlock) {
failureBlock(exporter.error);
}
}
});
}];