自定義相簿選中圖片
#import <UIKit/UIKit.h>
#import<AssetsLibrary/AssetsLibrary.h>
#import <AVFoundation/AVFoundation.h>
#import "PhotoEditViewController.h"
#define SettingCamera 10102
@interface OnePhotoController :UIViewController
@property (nonatomic,weak) id<PhotoEditDelegate> delegate;
@property
@end
#import "UIImage+FixOrientation.h"
#import "OnePhotoController.h"
#import "PhotoSampleItem.h"
#import "ETPhotoUtil.h"
@interface OnePhotoController ()<UICollectionViewDataSource,UICollectionViewDelegate,UIAlertViewDelegate>
@property (weak,nonatomic
@property (nonatomic,strong) UICollectionView *collectionView;
@property (nonatomic,strong) NSMutableArray *allGroups;
@property (nonatomic,strong) ALAssetsLibrary*library ;
@property (nonatomic,assign) BOOL firstIn;
@end
@implementation OnePhotoController
- (instancetype)init{
self = [superinit];
if (self) {
_firstIn =YES;
}
returnself;
}
- (void)viewDidLoad {
[superviewDidLoad];
//設定collectionView
self.allGroups = [[ETPhotoUtilsharedInstance] allPhotos];
self.naviTitleItem.title = [[ETPhotoUtilsharedInstance]cameraRoll];
[selfsetCollectionViewFlowLayout];
[self.collectionViewreloadData];
if ([self.allGroupscount]==0) {
[selfisAuthorizationStatus];
}
}
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
// if (self.allGroups.count>0&&_firstIn) {
// NSIndexPath *indexPath= [NSIndexPath indexPathForRow:(self.allGroups.count -1) inSection:0];
// [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionBottom animated:NO];
// _firstIn = NO;
// }
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
}
#pragma mark - Main Method
- (NSMutableArray *)allGroups{
if (_allGroups ==nil) {
_allGroups = [NSMutableArrayarray];
}
return_allGroups;
}
- (void)setCollectionViewFlowLayout{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayoutalloc] init];
layout.itemSize =CGSizeMake((kScreenWidth -30)*.25,(kScreenWidth -30)*.25);
layout.minimumLineSpacing =6;
layout.minimumInteritemSpacing =6;
layout.sectionInset =UIEdgeInsetsMake(10,6, 10,6);
self.collectionView = [[UICollectionViewalloc] initWithFrame:CGRectMake(0,64, kScreenWidth, kScreenHeight-64)collectionViewLayout:layout];
self.collectionView.backgroundColor = [UIColorclearColor];
[self.collectionViewregisterClass:[PhotoSampleItemclass] forCellWithReuseIdentifier:@"collectionView"];
self.collectionView.dataSource = self;
self.collectionView.delegate =self;
[self.viewaddSubview:self.collectionView];
}
//取消按鈕
- (IBAction)cancelAction:(UIButton *)sender {
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
#pragma mark - UICollectionViewDelegate
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
returnself.allGroups.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
PhotoSampleItem *cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"collectionView"forIndexPath:indexPath];
dispatch_async(dispatch_get_global_queue(0,0), ^{
ALAsset *alaset = [self.allGroupsobjectSafetyAtIndex:indexPath.row];
//獲取到媒體的型別
NSString *type = [alasetvalueForProperty:ALAssetPropertyType];
//獲取到相片、視訊的縮圖
UIImage *image =nil;
if ([selfcurrentDeviceIsIpad]){
//獲取到相片、視訊的縮圖
CGImageRef cgImage = [[alasetdefaultRepresentation] fullScreenImage];
image = [UIImageimageWithCGImage:cgImage];
}else{
//獲取到相片、視訊的縮圖
CGImageRef cgImage = [alasetaspectRatioThumbnail];
image = [UIImageimageWithCGImage:cgImage];
}
//媒體型別是相片
if ([typeisEqualToString:ALAssetTypePhoto])
{
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image=image;
});
}
});
return cell;
}
- (BOOL)currentDeviceIsIpad{
NSString* strDevice = [[UIDevicecurrentDevice].modelsubstringToIndex:4];
if ([strDeviceisEqualToString:@"iPad"]) {
returnYES;
} else {
returnNO;
}
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
ALAsset *alasset =nil;
alasset = [self.allGroupsobjectSafetyAtIndex:indexPath.row];
NSArray *item= [UIImagegetHeadMetaFromAlasset:alasset];
PhotoEditViewController *editVC = [PhotoEditViewControllernew];
editVC.delegate =self.delegate;
editVC.upImgs = item;
editVC.isScale =self.isScale;
[self.navigationControllerpushViewController:editVCanimated:YES];
}
#pragma mark - **********ALAssetsGroup DataSource*************
- (void)isAuthorizationStatus{
// 獲取當前應用對照片的訪問授權狀態
ALAuthorizationStatus authorizationStatus = [ALAssetsLibraryauthorizationStatus];
// 如果沒有獲取訪問授權,或者訪問授權狀態已經被明確禁止,則顯示提示語,引導使用者開啟授權
if (authorizationStatus ==ALAuthorizationStatusRestricted || authorizationStatus ==ALAuthorizationStatusDenied) {
// 展示提示語
NSDictionary *mainInfoDictionary = [[NSBundlemainBundle] infoDictionary];
NSString *appName = [mainInfoDictionaryobjectForKey:@"CFBundleName"];
UIAlertView * alertView = [[UIAlertViewalloc] initWithTitle:nilmessage:[NSStringstringWithFormat:@"請在裝置的\"設定-隱私-照片\"選項中,允許%@訪問你的手機相簿", appName] delegate:selfcancelButtonTitle:@"設定"otherButtonTitles:@"稍後再說",nil];
alertView.tag =SettingCamera;
[alertView show];
}
}
#pragma mark - **********AlertViewDelegate***********
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex==0){
NSURL *setUrl =nil;
if (alertView.tag ==SettingCamera) {
setUrl = [NSURLURLWithString:@"prefs:root=Privacy"];
}
[[UIApplicationsharedApplication] openURL:setUrl];
}
if (buttonIndex==1) {
if (alertView.tag ==SettingCamera) {
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
}
}
@end
相關推薦
自定義相簿選中圖片
#import <UIKit/UIKit.h> #import<AssetsLibrary/AssetsLibrary.h> #import <AVFoundation/AVFoundation.h> #import "Phot
vue導航欄自定義設定帶圖片(選中狀態重新整理不消失)
轉載自https://blog.csdn.net/wang1006008051/article/details/78686451?utm_source=blogxgwz6 Vue導航欄 用Vue寫手機端的專
iOS-對圖片操作---新增到自定義相簿
轉自:https://www.jianshu.com/p/7113c2c15e2c 圖片操作---新增到自定義相簿 實際上,自定義相簿中的圖片並不是實際的圖片,而是對系統【相機膠捲】這個相簿中的圖片進行一個引用,所以將圖片儲存到自定義相簿的第一步就是先儲存到系統的【相機膠捲
iOS-儲存圖片到(自定義)相簿步驟
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #000000; background-color: #ffffff } 儲存到相簿步驟: 1.儲存圖片到【相機膠捲】 2.擁有一個【自定義相簿】 3.將剛
android 自定義比例裁剪圖片(拍照 相簿)方式 自定義比例
先說下我這個有啥好處 主要是能夠自定義設定裁剪圖片的比例.比如 :今天產品 給你說裁剪 成16:9 的圖片. 你做好了 OK 明天 產品又和你說 裁剪成10:7 的圖片 ,你是不是要吐血, 我這裡只要設定一行程式碼就可以改變裁剪的比例. OK 還是老規
iOS uitableview自定義相簿(實現拍照並儲存在指定目錄以相簿的形式展示圖片)
原理: 圖片的展示是通過uitableview實現。照片的展示以及選擇(uitableviewce’l’l)是通過倆個uibutton的疊加完成。通過設定每個uibutton的tag,並在viewcontroller中實現cell的delegate來實現對ui
Android 自定義控件——圖片剪裁
ets nis anti none span out pro int() mat 如圖: 思路:在一個自定義View上繪制一張圖片(參照前面提到的另一篇文章),在該自定義View上繪制一個自定義的FloatDrawable,也就是圖中的浮層。繪制圖片和FloatDra
Enjoy! 多達400多萬的動態搞笑,愛情,友情。。。。表情下載 表情表情自定義表情表情圖片下載 自定義QQ表情使用方法完全圖解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
自定義水波擴散圖片
公司產品需要一個按鈕有一個水波紋擴散的效果,就簡單的做了一個。先上圖 然後就是原始碼了,程式碼很簡單 我就不解釋了,就是想留著做個紀念 package com.example.administrator.myapplication.view; import android.an
iOS開發-自定義後臺顯示圖片 iOS7-Background Fetch的應用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
pytorch—ImageFolder/自定義類 讀取圖片資料—Transform資料轉換
文章目錄 一、torchvision 影象資料讀取 [0, 1] 二、torchvision 的 Transform 三、讀取影象資料類 3.1 class torchvision.d
Android自定義view實現圖片選色器
https://www.jb51.net/article/141336.htm 這篇文章主要為大家詳細介紹了Android自定義view實現圖片選色器,具有一定的參考價值,感興趣的小夥伴們可以參考一下 簡介 本文介紹該自定義view的使用及實現的方法,主要實現以下幾個功能: - 選取
Android 自定義相機 Camera 圖片方向問題
相機預覽方向問題 對於相機的預覽方向我們可以通過如下API進行設定 camera.setDisplayOrientation(0);但是,該API影響的是相機的預覽方向,對於照片的儲存方向並沒有什麼影響,最終照片儲存的方向還是由Camera的影象Sensor決定的。 照片儲
LayoutParams和onMeasure的效率(自定義16:9圖片)
-- SetLayoutParams和onMeasure的差別 setLayoutParams:設定view的寬度和高度。 onMeasure: 設定view的可見寬度和高度。 1) LayoutParams RelativeLayout.LayoutParams par
自定義相簿時候的複選框☑️問題。
我的相簿裡是一個recycleView所以操作起來也很方便,我這裡直接就貼上條目佈局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.
iOS分段選擇器、旅行App、標度尺、對對碰小遊戲、自定義相簿等原始碼
iOS精選原始碼 企業級開源專案,模仿藝龍旅行App 標籤選擇器--LeeTagView CSSegmentedControl常用的分段選擇器,簡單易用! 仿微信左滑刪除 IOS左滑返回 輸入框 iOS 基於PhotoKit框架的自定義相簿 JHDraw - 畫線,
scrapy自定義pipeline下載圖片/文件
自定義圖片/文件下載pipeline,自定義一個自己需要的路徑來儲存下載的圖片/文件 自定義pipeline可以基於scrapy自帶的ImagesPipeline的基礎上完成。 可以重寫ImagesPipeline中的三個法:get_media_requests(),file_path(),
雲展網教程 | 如何自定義電子書背景圖片
一、會員可以不用模板中的背景圖片,通過上傳您的圖片自定義背景圖片哦【付費會員功能】。 1、通過頭像進入個人中心,選擇我的資料夾 2、點選編輯雜誌進入編輯頁面。 3、在設定欄目選擇背景圖片。如圖 在左側編輯雜誌設定欄目下的背景圖片,點選背景圖片檔案選擇檔案,上傳您的檔案。 4、上
Android中自定義滑動選中控制元件WheelView
WheelView a great functional custom WheelView with demo in dialog and bottomDialog,android 滾動選擇控制元件,滾動選擇器 ========= How to
android 自定義ImageView實現圖片手勢滑動,多點觸控放大縮小效果
首先呢,還是一貫作風,我們先來看看眾多應用中的示例:(這種效果是很常見的,可以說應用的必須品.) 搜狐客戶端 百度新聞客戶端