BSFrameworks 0.2.0

BSFrameworks 0.2.0

BlackStar 维护。



 
依赖
Masonry>= 0
SDWebImage>= 0
 

2023.2.13开始对所有pod库进行功能完善、修复,并且发布pod稳定版,预计3月底完成。

BSFrameworks (修复的问题没有来得及发pod,如果项目中使用,请暂时直接使用源码)

版本 0.1.10

BSFrameworks 是一个用于学习 iOS 各类知识点的个人项目,其中包含了部分个人学习使用的示例。在此期间,我根据所学封装了一些常用控件,并将其作为 pod 组件封装使用于实际产品中。由于产品需求的原因,部分组件的功能比较单一,不符合通用性,但大部分功能都经过了扩展,开放性较强。封装组件未经过专业性测试,可能存在 bug,如果在使用过程中遇到问题,请通过邮箱联系我,我将尽快修复:[email protected]。此项目将持续到我退出 IT 界,否则会一直更新维护,更新速度可能较慢,但不会放弃。预计退休时间:黄金被劝退时间 35 岁,2025 年。

CI Status Version License Platform

示例

要运行示例项目,请首先克隆存储库,然后从 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 文件。