亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS 開發之操作圖庫自定義控制器

2020-07-26 02:55:44
字體:
來源:轉載
供稿:網友

IOS 開發之操作圖庫自定義控制器

步驟如下:

新建此類的代理屬性必須遵守的協議:

新建PhotoButtonDelegate.h如下:

// // PhotoButtonDelegate.h // 作業整理 // // Created by apple on 15/9/16. // Copyright (c) 2015年 LiuXun. All rights reserved. //  #import <Foundation/Foundation.h> @class ImageAndPhotos; @protocol PhotoButtonDelegate <NSObject>  -(void) setPhotoButton:(ImageAndPhotos *) imgAndP; @end 

新建此類如下:

編輯ImageAndPhotos.h如下:

// // ImageAndPhotos.h // 作業整理 // // Created by apple on 15/9/16. // Copyright (c) 2015年 LiuXun. All rights reserved. //  #import <Foundation/Foundation.h> #import "PhotoButtonDelegate.h" @class UIBaseScrollView; @interface ImageAndPhotos : NSObject <UIAlertViewDelegate,UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>  @property (nonatomic, strong) UIViewController *controller; @property (nonatomic, strong) UIImage *img; @property (nonatomic, strong) UIButton *btn; @property (nonatomic, weak) id<PhotoButtonDelegate> delegate;   -(id)initWithControler:(UIViewController *) crtler AndButton:(UIButton *) button; @end 

編輯ImageAndPhotos.m如下:

// // ImageAndPhotos.m // 作業整理 // // Created by apple on 15/9/16. // Copyright (c) 2015年 LiuXun. All rights reserved. //  #import "ImageAndPhotos.h"  @implementation ImageAndPhotos  -(id)initWithControler:(UIViewController *) crtler AndButton:(UIButton *) button {   if (self = [super init]) {     self.controller = crtler;     self.btn = button;     [self CameraEvent];   }   return self; }   -(void)CameraEvent {   [self.btn addTarget:self action:@selector(showActionSheet) forControlEvents:UIControlEventTouchUpInside]; }  -(void) showActionSheet {   UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"我的相冊", nil nil];   [actionSheet showInView:self.controller.view];  }  // 實現UIActionSheetDelegate協議中監聽按鈕的方法 -(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {   if (buttonIndex == 0) {     [self addCamera];   }   else if(buttonIndex == 1)   {     [self addPhoto];   }    }  -(void)addCamera {   // 判斷是否可以打開一個相機   if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {     // 創建一個調出拍照的控制器     UIImagePickerController *picker = [[UIImagePickerController alloc] init];     picker.delegate = self;     picker.allowsEditing = YES;     // 攝像頭     NSLog(@"++++addCamera++++");     picker.sourceType = UIImagePickerControllerSourceTypeCamera;     [self.controller presentViewController:picker animated:YES completion:^{        }];   }   else   {     [self showAlertView];   } } -(void) addPhoto {   // 相冊可以用模擬器打開,但是相機不可以用模擬器打開   if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {     UIImagePickerController *picker = [[UIImagePickerController alloc] init];          picker.delegate = self;     picker.allowsEditing = YES; // 是否可以編輯          // 打開相冊選擇相片     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //表示管理圖庫     [self.controller presentViewController:picker animated:YES completion:nil];        }   else   {     [self showAlertView];   }    }  -(void)showAlertView {   UIAlertView *alert =[[UIAlertView alloc] initWithTitle:@"提示" message:@"你沒有攝像頭" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil nil];   [alert show]; }  // 代理協議中的方法 // 拍攝完成后,其實是選中圖片后的方法要執行的方法,如果是照相的話則選中拍照后的相片 -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {   // 得到圖片   self.img = [info objectForKey:UIImagePickerControllerEditedImage];   // 圖片存入圖庫   if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {     UIImageWriteToSavedPhotosAlbum(self.img, nil, nil, nil); // 如果是相機   }      [self.controller dismissViewControllerAnimated:YES completion:^{     if ([self.delegate respondsToSelector:@selector(setPhotoButton:)]) {       [self.delegate setPhotoButton:self];     }   }];    }  //選中圖片點擊cancel按鈕后執行的方法 -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {      [self.controller dismissViewControllerAnimated:YES completion:nil]; }   @end 

此類新建完成,在自定義控件中的應用如下:(此自定義控件是一個上傳圖片的scrollVIew)

新建自定義控件類編輯UIBaseScrollView.h如下

// // UIBaseScrollView.h // 作業整理 // // Created by apple on 15/9/16. // Copyright (c) 2015年 LiuXun. All rights reserved. //  #import "UIBaseVIew.h" #import "ImageAndPhotos.h"   @interface UIBaseScrollView : UIBaseVIew<PhotoButtonDelegate>  @property (nonatomic, strong) NSMutableArray *arrayImgs; @property (nonatomic, strong) UIScrollView *scroll; @property (nonatomic, strong) ImageAndPhotos *imgChange; @property (nonatomic, strong) UIButton *btnImg; @property (nonatomic, strong) UIImageView *imgV; -(id)initWithFrame:(CGRect)frame CurrenContr:(UIViewController *) crtl;  @end 編輯定義控件的.m文件如下:[objc] view plain copy// // UIBaseScrollView.m // 作業整理 // // Created by apple on 15/9/16. // Copyright (c) 2015年 LiuXun. All rights reserved. //  #import "UIBaseScrollView.h"  @implementation UIBaseScrollView  -(id)initWithFrame:(CGRect)frame CurrenContr:(UIViewController *) crtl {   if (self = [super initWithFrame:frame]) {     self.scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];          self.btnImg = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, frame.size.height-20, frame.size.height-20)];     [self.btnImg setImage:[UIImage imageNamed:@"tizhong_photo_increase_bj"] forState:UIControlStateNormal];          self.imgChange = [[ImageAndPhotos alloc] initWithControler:crtl AndButton:self.btnImg];     self.scroll.showsHorizontalScrollIndicator = YES;     self.imgChange.delegate = self;     [self.scroll addSubview:self.btnImg];     [self addSubview:self.scroll];   }   return self; }  -(void)setPhotoButton:(ImageAndPhotos *)imgAndP {   NSLog(@"%@&&&&&&&&&",self.imgChange.img);   if (imgAndP.img) {     self.imgV =[[UIImageView alloc] initWithFrame: self.btnImg.frame ];     self.imgV.image = imgAndP.img;     self.imgV.backgroundColor = [UIColor yellowColor];     [self.scroll addSubview:self.imgV];     self.btnImg.frame = CGRectMake(CGRectGetMaxX(self.imgV.frame)+10, self.imgV.frame.origin.y, self.imgV.frame.size.width, self.imgV.frame.size.height);     self.scroll.contentSize = CGSizeMake(CGRectGetMaxX(imgAndP.btn.frame)+10, 0);     if (CGRectGetMaxX(self.btnImg.frame)>self.scroll.frame.size.width) {       self.scroll.contentOffset = CGPointMake(self.btnImg.frame.origin.x-10, 0);     }   }  }  @end 

在控制器中使用此自定義控件如下:

UIBaseScrollView *det5 = [[UIBaseScrollView alloc] initWithFrame:CGRectMake(20, CGRectGetMaxY(det4.frame)+20, WIDTH-40, 80) CurrenContr:self]; 

運行結果如下:


在控制器中直接使用此相冊類也與此類似,不同之處就是讓所在控制器遵守類屬性的協議,然后實現即可,在此不再奧數。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品中文字幕在线| 欧美综合激情网| 97人人做人人爱| 国产欧美久久一区二区| 欧美激情极品视频| 欧美激情网友自拍| 欧美日韩国产精品一区二区不卡中文| 国产美女久久精品| 欧美一区二区三区……| 福利一区视频在线观看| 国产视频在线观看一区二区| 热99在线视频| 久久久精品美女| 日韩国产高清污视频在线观看| 国产亚洲精品高潮| 久久亚洲一区二区三区四区五区高| 欧美一级淫片videoshd| 日韩大陆毛片av| 欧美日韩在线观看视频小说| 91在线观看免费观看| 日韩黄色高清视频| 日韩在线观看免费网站| 中文字幕9999| 日韩电影大全免费观看2023年上| 韩国19禁主播vip福利视频| 日韩av高清不卡| 久久久成人精品| 国产亚洲精品综合一区91| 91九色国产视频| 久久精品视频在线播放| 日韩欧美亚洲成人| 亚洲欧美国产精品久久久久久久| 国产亚洲精品久久久久久牛牛| 国产成人精品免高潮费视频| 欧美电影第一页| 日本精品在线视频| 国产九九精品视频| 久久中文字幕一区| 欧美激情成人在线视频| 欧美日韩xxx| 国产精品久久久久久久久| 欧美激情免费看| 亚洲а∨天堂久久精品9966| 日韩电影大全免费观看2023年上| 国产中文字幕91| 日韩欧美国产视频| 久久91精品国产91久久跳| 亚洲精品狠狠操| 九九热精品视频| 亚洲free性xxxx护士白浆| 欧美裸体xxxx极品少妇软件| 日韩在线视频国产| www高清在线视频日韩欧美| 日韩免费电影在线观看| 精品亚洲一区二区三区在线播放| 国产精品视频内| 精品国偷自产在线| 国产精品1区2区在线观看| 国产aⅴ夜夜欢一区二区三区| 国产日韩精品综合网站| 91久久精品美女高潮| 欧美二区乱c黑人| 91精品国产自产在线| 成人疯狂猛交xxx| 久久亚洲精品国产亚洲老地址| 一区二区欧美日韩视频| 亚洲第一色中文字幕| 国产成人在线一区二区| 亚洲午夜av久久乱码| 亚洲人成在线播放| 久久亚洲精品视频| 另类专区欧美制服同性| 欧美日韩高清在线观看| 在线播放国产精品| 狠狠综合久久av一区二区小说| 亚洲成人免费网站| 亚洲白虎美女被爆操| 日韩精品视频在线免费观看| 亚洲三级免费看| 国产精品视频男人的天堂| 在线播放国产一区二区三区| 日韩a**站在线观看| 热久久99这里有精品| 亚洲国产另类 国产精品国产免费| 日韩亚洲欧美中文高清在线| 91高清视频免费| 日本午夜人人精品| 国产免费一区二区三区在线能观看| 精品国产一区二区三区四区在线观看| 日韩av在线一区| 成人免费视频a| 狠狠久久亚洲欧美专区| 2021久久精品国产99国产精品| 亚洲片av在线| 亚洲精品日韩欧美| 欧美高清在线观看| 久久久91精品| 国产精品中文字幕在线| 欧美精品www| 7777精品久久久久久| 亚洲精品综合久久中文字幕| 日韩高清欧美高清| 国产精品极品美女在线观看免费| 久久久久久久成人| 97视频免费在线观看| 国产欧美精品xxxx另类| 一区二区三区国产在线观看| 国产精品青青在线观看爽香蕉| 亚洲人免费视频| 91精品国产综合久久久久久蜜臀| 国产精品91免费在线| 亚洲国模精品一区| 国产欧美精品在线播放| 日韩hd视频在线观看| 福利精品视频在线| www.久久撸.com| 伊人精品在线观看| 一本色道久久综合亚洲精品小说| 国产69精品久久久久99| 欧美日韩国产精品专区| 久久久国产精品一区| 51精品在线观看| 69久久夜色精品国产69乱青草| 久久精品亚洲精品| 日韩av免费看| 国模吧一区二区三区| 亚洲精品www久久久久久广东| 欧美日韩亚洲视频一区| 久久午夜a级毛片| 久久手机免费视频| 国产精品第一区| 91精品国产免费久久久久久| 成人有码视频在线播放| 亚洲精品美女久久| 亚洲天堂开心观看| 狠狠做深爱婷婷久久综合一区| yw.139尤物在线精品视频| 日韩高清电影免费观看完整版| 国内偷自视频区视频综合| 欧美精品成人91久久久久久久| 亚洲欧美日韩国产中文专区| 美日韩精品视频免费看| 国产精品嫩草影院久久久| 欧美精品videossex性护士| 国产欧美一区二区白浆黑人| 欧美日韩国产丝袜另类| 国产亚洲精品久久久久久牛牛| 欧洲亚洲免费视频| 日韩中文字幕在线| 亚洲精品有码在线| 日韩毛片在线看| 色噜噜狠狠色综合网图区| 成人黄色生活片| 国产精品吹潮在线观看| 欧美激情视频一区二区三区不卡| 欧美成人免费小视频| 91免费精品国偷自产在线| 日韩在线观看精品| 久久久久久久999精品视频| 中文字幕一区二区三区电影| 91性高湖久久久久久久久_久久99| 日韩视频永久免费观看| 久久久久久久久久亚洲| 国产精品www|