正文

networkcamera-networkcamera攝像頭

xinfeng335
文章最后更新時間2025年02月08日,若文章內(nèi)容或圖片失效,請留言反饋!

  一個模仿微博networkcamera的照片選擇器

networkcamera-networkcamera攝像頭
(圖片來源網(wǎng)絡(luò),侵刪)

  github地址:https://github.com/LoveZYForever/HXWeiboPhotoPicker

  仿微博照片選擇器 支持 iOS8 以上

  前言

  Demo 使用networkcamera的是PhotoKit框架來獲取系統(tǒng)相冊以及照片/視頻

  關(guān)于PhotoKit框架說明可以看看此文章

  http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html

  安裝方式

  Cocoapods:pod 'HXWeiboPhotoPicker' '~> 2.0.4'搜索不到庫或最新版請執(zhí)行pod repo update

  手動導入:將項目中的“HXWeiboPhotoPicker”文件夾拖入項目中

  網(wǎng)絡(luò)圖片加載使用的是SDWebImage v4.0.0

  只使用照片選擇功能 導入頭文件 "HXPhotoviewController.h"

  選完照片/視頻后自動布局功能 導入頭文件 "HXPhotoView.h"

  主要功能:

  1、查看/選擇 GIF圖片

  2、查看/選擇 LivePhoto

  3、支持 3DTouch 預覽

  4、照片和視頻可設(shè)置是否支持同時選擇

  5、自定義相機拍照/錄制視頻

  6、自定義轉(zhuǎn)場動畫(完全模仿微博效果)

  7、選完之后圖片九宮格排列(View自動更新高度、通過代理返回)

  8、圖片長按拖動更變順序

  9、圖片設(shè)置最大上限networkcamera,加號按鈕自動隱藏

  10、支持瀏覽網(wǎng)絡(luò)圖片

  11、支持裁剪圖片

  效果圖如下:

HXPhotoManager 照片管理類相關(guān)屬性介紹

  HXPhotoManagerSelectedTypePhoto // 只選擇圖片

  HXPhotoManagerSelectedTypeVideo // 只選擇視頻

  HXPhotoManagerSelectedTypePhotoAndVideo // 圖片和視頻一起

  HXPhotoManagerCameraTypeHalfScreen // 半屏相機

  HXPhotoManagerCameraTypefullScreen // 全屏相機

  HXPhotoManagerCameraTypeSystem // 系統(tǒng)相機

  /**

  * 管理UI的類

  */

  HXPhotoUIManager *UIManager;

  /**

  * 拍攝的 照片/視頻 是否保存到系統(tǒng)相冊 默認NO 此功能需要配合 監(jiān)聽系統(tǒng)相冊 和 緩存相冊 功能 (請不要關(guān)閉)

  */

  BOOL saveSystemAblum;

  /**

  * 視頻能選擇的最大秒數(shù) - 默認 5分鐘/300秒

  */

  NSTimeInterval videoMaxDuration;

  /**

  * 是否緩存相冊, manager會監(jiān)聽系統(tǒng)相冊變化(需要此功能時請不要關(guān)閉監(jiān)聽系統(tǒng)相冊功能) 默認YES

  */

  BOOL cacheAlbum;

  /**

  * 是否監(jiān)聽系統(tǒng)相冊 默認 YES

  */

  BOOL monitorSystemAlbum;

  /**

  是否為單選模式 默認 NO

  */

  BOOL singleSelected;

  /**

  單選模式下是否需要裁剪 默認YES

  */

  BOOL singleSelecteClip;

  /**

  是否開啟3DTouch預覽功能 默認NO

  */

  BOOL open3DTouchPreview;

  /**

  相機界面類型 // 默認 半屏

  */

  HXPhotoManagerCameraType cameraType;

  /**

  刪除網(wǎng)絡(luò)圖片時是否顯示Alert // 默認不顯示

  */

  BOOL showDeleteNetworkPhotoAlert;

  /**

  網(wǎng)絡(luò)圖片地址數(shù)組

  */

  NSMutableArray *networkPhotoUrls;

  /**

  是否把相機功能放在外面 默認 NO 使用 HXPhotoView 時有用

  */

  BOOL outerCamera;

  /**

  是否打開相機功能

  */

  BOOL openCamera;

  /**

  是否開啟查看GIF圖片功能 - 默認開啟

  */

  BOOL lookGifPhoto;

  /**

  是否開啟查看LivePhoto功能呢 - 默認NO

  */

  BOOL lookLivePhoto;

  /**

  是否一開始就進入相機界面

  */

  BOOL goCamera;

  /**

  最大選擇數(shù) 等于 圖片最大數(shù) + 視頻最大數(shù) 默認10 - 必填

  */

  NSInteger maxNum;

  /**

  圖片最大選擇數(shù) 默認9 - 必填

  */

  NSInteger photoMaxNum;

  /**

  視頻最大選擇數(shù) // 默認1 - 必填

  */

  NSInteger videoMaxNum;

  /**

  圖片和視頻是否能夠同時選擇 默認支持

  */

  BOOL selectTogether;

  /**

  相冊列表每行多少個照片 默認4個 iphone 4s / 5 默認3個

  */

  NSInteger rowCount;

HXPhotoUIManager類相關(guān)屬性

  /** HXPhotoView添加按鈕圖片 */

  NSString *photoViewAddImageName;

  /** 網(wǎng)絡(luò)圖片占位圖 */

  NSString *placeholderImageName;

  /*-------------------導航欄相關(guān)屬性------------------*/

  /** 導航欄背景顏色 */

  UIColor *navBackgroundColor;

  /** 導航欄背景圖片 */

  NSString *navBackgroundImageName;

  /** 導航欄左邊按鈕文字顏色 */

  UIColor *navLeftBtntitleColor;

  /** 導航欄 標題/相冊名 文字顏色 */

  UIColor *navTitleColor;

  /** 導航欄標題箭頭圖標 */

  NSString *navTitleImageName;

  /** 導航欄右邊按鈕普通狀態(tài)背景顏色 */

  UIColor *navRightBtnNormalBgColor;

  /** 導航欄右邊按鈕普通狀態(tài)文字顏色 */

  UIColor *navRightBtnNormalTitleColor;

  /** 導航欄右邊按鈕禁用狀態(tài)背景顏色 */

  UIColor *navRightBtnDisabledBgColor;

  /** 導航欄右邊按鈕禁用狀態(tài)文字顏色 */

  UIColor *navRightBtnDisabledTitleColor;

  /** 導航欄右邊按鈕禁用狀態(tài)下的 layer.borderColor 邊框線顏色 */

  UIColor *navRightBtnBorderColor;

  /*-------------------相冊列表視圖------------------*/

  /** 相冊列表有選擇內(nèi)容的提醒圖標 */

  NSString *albumViewSelectImageName;

  /** 相冊名稱文字顏色 */

  UIColor *albumNameTitleColor;

  /** 照片數(shù)量文字顏色 */

  UIColor *photosNumberTitleColor;

  /** 相冊列表視圖背景顏色 */

  UIColor *albumViewBgColor;

  /** 相冊列表cell選中顏色 */

  UIColor *albumViewCellSelectedColor;

  /*-------------------Cell------------------*/

  /** cell相機照片圖片 */

  NSString *cellCameraPhotoImageName;

  /** cell相機視頻圖片 */

  NSString *cellCameraVideoImageName;

  /** 選擇按鈕普通狀態(tài)圖片 */

  NSString *cellSelectBtnNormalimageName;

  /** 選擇按鈕選中狀態(tài)圖片 */

  NSString *cellSelectBtnSelectedImageName;

  /** gif標示圖標 */

  NSString *cellGitIconImageName;

  /*-------------------底部預覽、原圖按鈕視圖------------------*/

  /** 是否開啟毛玻璃效果開啟了自動屏蔽背景顏色 */

  BOOL blurEffect;

  /** 底部視圖背景顏色 */

  UIColor *bottomViewBgColor;

  /** 預覽按鈕普通狀態(tài)文字顏色 */

  UIColor *previewBtnNormalTitleColor;

  /** 預覽按鈕禁用狀態(tài)文字顏色 */

  UIColor *previewBtnDisabledTitleColor;

  /** 預覽按鈕普通狀態(tài)背景圖片 */

  NSString *previewBtnNormalBgImageName;

  /** 預覽按鈕禁用狀態(tài)背景圖片 */

  NSString *previewBtnDisabledBgImageName;

  /** 原圖按鈕普通狀態(tài)文字顏色 */

  UIColor *originalBtnNormalTitleColor;

  /** 原圖按鈕禁用狀態(tài)文字顏色 */

  UIColor *originalBtnDisabledTitleColor;

  /** 原圖按鈕邊框線顏色 */

  UIColor *originalBtnBorderColor;

  /** 原圖按鈕背景顏色 */

  UIColor *originalBtnBgColor;

  /** 原圖按鈕普通狀態(tài)圖片 */

  NSString *originalBtnNormalimageName;

  /** 原圖按鈕選中狀態(tài)圖片 */

  NSString *originalBtnSelectedImageName;

  /*-------------------半屏相機界面------------------*/

  /** 返回按鈕X普通狀態(tài)圖片 */

  NSString *cameraCloseNormalImageName;

  /** 返回按鈕X高亮狀態(tài)圖片 */

  NSString *cameraCloseHighlightedImageName;

  /** 閃光燈自動模式圖片 */

  NSString *flashAutoImageName;

  /** 閃光燈打開模型圖片 */

  NSString *flashOnImageName;

  /** 閃光燈關(guān)閉模式圖片 */

  NSString *flashOffImageName;

  /** 反轉(zhuǎn)相機普通狀態(tài)圖片 */

  NSString *cameraReverseNormalImageName;

  /** 反轉(zhuǎn)相機高亮狀態(tài)圖片 */

  NSString *cameraReverseHighlightedImageName;

  /** 中心圓點下照片and視頻普通狀態(tài)文字顏色 */

  UIColor *cameraPhotoVideoNormalTitleColor;

  /** 中心圓點下照片and視頻選中狀態(tài)文字顏色 */

  UIColor *cameraPhotoVideoSelectedTitleColor;

  /** 拍照按鈕普通狀態(tài)圖片 */

  NSString *takePicturesBtnNormalImageName;

  /** 拍照按鈕高亮狀態(tài)圖片 */

  NSString *takePicturesBtnHighlightedImageName;

  /** 錄制按鈕普通狀態(tài)圖片 */

  NSString *recordedBtnNormalImageName;

  /** 錄制按鈕高亮狀態(tài)圖片 */

  NSString *recordedBtnHighlightedImageName;

  /** 刪除拍攝的照片/視頻圖片 */

  NSString *cameraDeleteBtnImageName;

  /** 確定拍攝的照片/視頻普通狀態(tài)圖片 */

  NSString *cameraNextBtnNormalImageName;

  /** 確定拍攝的照片/視頻高亮狀態(tài)圖片 */

  NSString *cameraNextBtnHighlightedImageName;

  /** 中心圓點圖片 */

  NSString *cameraCenterDotImageName;

  /** 相機聚焦圖片 */

  NSString *cameraFocusImageName;

  /** 全屏相機界面下一步按鈕文字顏色 */

  UIColor *fullScreenCameraNextBtnTitleColor;

  /** 全屏相機界面下一步按鈕背景顏色 */

  UIColor *fullScreenCameraNextBtnBgColor;

  HXPhotoResultModel相關(guān)屬性介紹

  HXPhotoResultModelMediaTypePhoto // 照片

  HXPhotoResultModelMediaTypeVideo // 視頻

  /** 資源類型 */

  HXPhotoResultModelMediaType type;

  /** 原圖URL */

  NSURL *fullSizeImageURL;

  /** 原尺寸image 如果資源為視頻時此字段為視頻封面圖片 */

  UIImage *displaySizeImage;

  /** 原圖方向 */

  int fullSizeImageOrientation;

  /** 視頻Asset */

  AVAsset *avAsset;

  /** 視頻URL */

  NSURL *videoURL;

  /** 創(chuàng)建日期 */

  NSDate *creationDate;

  /** 位置信息 */

  CLLocation *location;

Demo1

  // 懶加載 照片管理類

  - (HXPhotoManager *)manager {

  if (!_manager) {

  _manager = [[HXPhotoManager alloc] initWithType:HXPhotoManagerSelectedTypePhotoAndVideo];

  }

  return _manager;

  }

  // 照片選擇控制器

  HXPhotoViewController *vc = [[HXPhotoViewController alloc] init];

  vc.delegate = self;

  vc.manager = self.manager;

  [self presentViewController:[[UINavigationController alloc] initWithRootViewController:vc] animated:YES completion:nil];

  // 通過 HXPhotoViewControllerDelegate 代理返回選擇的圖片以及視頻

  - (void)photoViewControllerDidNext:(NSArray *)allList Photos:(NSArray *)photos Videos:(NSArray *)videos Original:(BOOL)original

  // 點擊取消

  - (void)photoViewControllerDidCancel

Demo2

  // 懶加載 照片管理類

  - (HXPhotoManager *)manager {

  if (!_manager) {

  _manager = [[HXPhotoManager alloc] initWithType:HXPhotoManagerSelectedTypePhotoAndVideo];

  }

  return _manager;

  }

  self.navigationController.navigationBar.translucent = NO;

  self.automaticallyAdjustsScrollViewInsets = YES;

  HXPhotoView *photoView = [[HXPhotoView alloc] initWithFrame:CGRectMake((414 - 375) / 2, 100, 375, 400) WithManager:self.manager];

  photoView.delegate = self;

  photoView.backgroundColor = [UIColor whiteColor];

  [self.view addSubview:photoView];

  // 代理返回 選擇、移動順序、刪除之后的圖片以及視頻

  - (void)photoView:(HXPhotoView *)photoView changeComplete:(NSArray<HXPhotoModel *> *)allList photos:(NSArray<HXPhotoModel *> *)photos videos:(NSArray<HXPhotoModel *> *)videos original:(BOOL)isOriginal;

  // 當view更新高度時調(diào)用

  - (void)photoView:(HXPhotoView *)photoView updateFrame:(CGRect)frame;

  // 刪除網(wǎng)絡(luò)圖片的地址

  - (void)photoView:(HXPhotoView *)photoView deleteNetworkPhoto:(NSString *)networkPhotoUrl;

  // 網(wǎng)絡(luò)圖片全部下載完成時調(diào)用

  - (void)photoViewAllNetworkingPhotoDownloadComplete:(HXPhotoView *)photoView;

  關(guān)于HXPhotoTools獲取資源信息 具體代碼還是請下載Demo

  // 將HXPhotoModel模型數(shù)組轉(zhuǎn)化成HXPhotoResultModel模型數(shù)組 - 已按選擇順序排序

  // !!!! 必須是全部類型的那個數(shù)組 就是 allList 這個數(shù)組 !!!!

  [HXPhotoTools getSelectedListResultModel:allList complete:^(NSArray<HXPhotoResultModel *> *alls, NSArray<HXPhotoResultModel *> *photos, NSArray<HXPhotoResultModel *> *videos) {

  NSSLog(@"全部類型:%@照片:%@視頻:%@",alls,photos,videos);

  }];

  HXPhotoTools提供一個方法可以根據(jù)傳入的模型數(shù)組轉(zhuǎn)換成圖片(UIImage)數(shù)組

  type是個枚舉

  HXPhotoToolsFetchHDImageType = 0, // 高清

  HXPhotoToolsFetchOriginalImageTpe, // 原圖

  [HXPhotoTools getImageForSelectedPhoto:photos type:HXPhotoToolsFetchHDImageType completion:^(NSArray<UIImage *> *images) {

  NSSLog(@"%@",images);

  for (UIImage *image in images) {

  if (image.images.count > 0) {

  // 到這里了說明這個image 是個gif圖

  }

  }

  }];

作者:楓葉丶

鏈接:http://www.jianshu.com/p/435d4af3c453

來源:簡書

iOS開發(fā)整理發(fā)布,轉(zhuǎn)載請聯(lián)系作者授權(quán)

-- 展開閱讀全文 --