2023.2.13开始对所有pod库进行功能完善、修复,并且发布pod稳定版,预计3月底完成。
BSFrameworks (修复的问题没有来得及发pod,如果项目中使用,请暂时直接使用源码)
版本 0.1.10
[email protected]。此项目将持续到我退出 IT 界,否则会一直更新维护,更新速度可能较慢,但不会放弃。预计退休时间:黄金被劝退时间 35 岁,2025 年。
BSFrameworks 是一个用于学习 iOS 各类知识点的个人项目,其中包含了部分个人学习使用的示例。在此期间,我根据所学封装了一些常用控件,并将其作为 pod 组件封装使用于实际产品中。由于产品需求的原因,部分组件的功能比较单一,不符合通用性,但大部分功能都经过了扩展,开放性较强。封装组件未经过专业性测试,可能存在 bug,如果在使用过程中遇到问题,请通过邮箱联系我,我将尽快修复:示例
要运行示例项目,请首先克隆存储库,然后从 Example 目录运行 pod install
。
依赖
安装
BSFrameworks 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。
项目包含两部分
-
学习知识点Demo
-
CocoaPods 组件
学习的所有知识点 Demo
Objective-C 学习的 Demo
测试结果和总结、注意事项都在注释中
所有测试结果均放在注释中
- 运行时间
- RunLoop
- GCD + NSOperation (多线程)
- 方法转发(消息转发机制)
- NSTimer(定时器强引用问题及解决方案:NSProxy 消息转发)
- AutoreleasePool (自动释放池)
- DynamicBehavior (动态行为)
- TransitionAnimator(转场动画,仿照AlertController)
- KVO(原理探究,自定义KVO)
- Socket(基于socket的简单通信,需要配合后台:Python服务端socket (需要 python 3.0 ,2.7版本的utf-8没处理,会报错))
- 一些算法(学习的几个算法,面试中被提问的,还有网上看到的)
- Category(分类,研究了下方法执行顺序,但未写注释,未写测试结果)
CocoaPods 组件
用途
所有功能
pod 'BSFrameworks'
1、图片选择器,支持选择图片和视频、图片预览和视频预览、原图选择、相机拍照和视频拍摄
2、图片预览控件,支持URL,PATH,IMAGE,支持混合预览
3、水印相机:使用AVFoundation框架自定义相机,(仅支持拍照后图片添加自定义水印视图),支持视频拍摄
4、轮播图:'2D/3D'
轮播图
pod 'BSFrameworks/BSLooperView'
功能简介:
2D/3D 效果,支持设置3D缩放级别
支持无限轮播,支持自动轮播,支持自动轮播时间间隔设置,支持自动轮播时的滚动方向
支持间距调整,支持缩放后设置中心item两边的item设置中心偏移量
支持collectionView滚动方向
支持自定义cell
-(BSLooperView *)looperView{
if (!_looperView) {
_looperView = [[BSLooperView alloc]initWithFrame:CGRectMake(20, 300, self.view.width - 40, 180)];
_looperView.cellName = @"BSCollectionViewCell";
_looperView.delegate = self;
_looperView.itemSize = CGSizeMake(self.view.width - 70 ,180);
_looperView.scale = 0.6;
_looperView.isInfinite = YES;
_looperView.autoLoop = YES;
_looperView.duration = 1;
_looperView.loopStyle = BSLOOP_STYLE_CARD;
//卡片样式只支持横向,不支持纵向
_looperView.scrollDirection = UICollectionViewScrollDirectionVertical;
//卡片样式只支持左右,不支持上下
_looperView.looperPosition = BSLooperPositionLeft;
// visibleCount 卡片样式独有属性
_looperView.visibleCount = 4;
// 卡片样式,minimumLineSpacing 无效
_looperView.minimumLineSpacing = 10;
// 卡片样式,centerOffset 无效
_looperView.centerOffset = -45;
}
return _looperView;
}
/// dataArr 需要最后设置,否则_looperView的样式属性将不生效
self.looperView.dataArr = self.dataArr;
图片选择器、图片预览控件、水印相机
pod 'BSFrameworks/BSPhotoFramework'
功能简介:
1、图片选择器,支持选择图片、图片预览、原图选择、相机拍照
2、图片预览控件,支持URL,PATH,IMAGE,支持混合预览(需要使用预览对象)
3、水印相机:使用AVFoundation框架自定义相机,拍照后图片添加水印
0.1.5 版本
1、修复部分bug
2、可选择视频还是照片
3、视频拍摄
4、视频预览
/// 整个图片选择控件,包含预览 + 相机 示例
BSPhotoManagerController *managerVC = [[BSPhotoManagerController alloc]init];
managerVC.BSDelegate = self;
managerVC.modalPresentationStyle = 0;
managerVC.mainColor = [UIColor darkTextColor];
managerVC.preBarAlpha = 0.7;
managerVC.currentSelectedCount = 0;
managerVC.allowSelectMaxCount = 9;
managerVC.supCamera = YES;
managerVC.autoPush = YES;
managerVC.saveToAlbum = YES;
managerVC.mediaType = 1;
[self presentViewController:managerVC animated:YES completion:nil];
/// 图片预览测试 示例
BSPhotoPreviewController *controller = [[BSPhotoPreviewController alloc]init];
NSArray *arr = @[[UIImage imageNamed:@"photo_camera_icon"],[UIImage imageNamed:@"preview_video_play"]];
[controller setPreviewPhotos:[NSMutableArray arrayWithArray:arr] previewType:PREVIEWTYPE_IMAGE defaultIndex:0];
controller.modalPresentationStyle = 0;
[self presentViewController:controller animated:YES completion:nil];
/// 视频预览本地视频 示例
BSPhotoPreviewVideoVC *vc = [[BSPhotoPreviewVideoVC alloc]init];
vc.barStyle = UIStatusBarStyleLightContent;
vc.mainColor = [UIColor blackColor];
vc.preNaviAlpha = 0.7;
NSString *test = [[NSBundle mainBundle]pathForResource:@"test" ofType:@".mp4"];
NSString *test1 = [[NSBundle mainBundle]pathForResource:@"test1" ofType:@".mp4"];
NSArray *arr1 = @[test,test1];
[vc setPreviewVideos:[NSMutableArray arrayWithArray:arr1] defaultIndex:0 videoType:VIDEOTYPE_PATH];
UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:vc];
navi.modalPresentationStyle = 0;
[self presentViewController:navi animated:YES completion:nil];
/// 自定义相机调用
/// 水印视图,点击拍照后会显示出来
/// 之所以这么做是因为公司需求需要,所以水印的逻辑是这样的,但是又懒得优化,就这样吧
self.waterMarkView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 40, 40)];
self.waterMarkView.image = [UIImage imageNamed:@"test.jpg"];
BSCameraController *camera = [[BSCameraController alloc]init];
camera.modalPresentationStyle = 0;
camera.delegate = self;
camera.saveToAlbum = YES;
camera.mediaType = 2;
camera.waterMarkView = self.waterMarkView;
[self presentViewController:camera animated:YES completion:nil];
作者
[email protected],[email protected]
许可证
BSFrameworks 以 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。