UIAlertController封装(包含iPad)

2023-10-17 09:08

本文主要是介绍UIAlertController封装(包含iPad),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先需要支持iOS 8.0及其以上的版本

UIAlertController 有两种展示方式

1 就是列表类型的 

UIAlertControllerStyleActionSheet
2 就是弹出框类型的

UIAlertControllerStyleAlert

代码

.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>typedef enum : NSUInteger {selectImageType,selectMovieType,selectImageAndMovieType,
} SelectImageMovieType;typedef void(^completionImageBlock)(id imageOrMovie);@interface ImagePickerManager : NSObject<UIImagePickerControllerDelegate,UINavigationControllerDelegate>+(ImagePickerManager *)shareManager;-(void)showImagePickFromController:(UIViewController *)vcsourceType:(UIImagePickerControllerSourceType)sourceTypeimageMovieSelectedType:(SelectImageMovieType)imageMovieSelectedTypecompletion:(completionImageBlock)completion;-(void)showImagePickFromController:(UIViewController *)vcisEditing:(BOOL)isEditingisFlash:(BOOL)isFlashcompletion:(completionImageBlock)completion;-(void)showImagePickFromController:(UIViewController *)vccompletion:(completionImageBlock)completion;-(void)showImagePickFromAllowsEditing:(BOOL)allowsEditingvideoQuality:(UIImagePickerControllerQualityType)videoQualitysourceType:(UIImagePickerControllerSourceType)sourceTypemodalPresentationStyle:(UIModalPresentationStyle)modalPresentationStylecontroller:(UIViewController *)vcisFlash:(BOOL)isFlashimageMovieSelectedType:(SelectImageMovieType)imageMovieSelectedTypecompletion:(completionImageBlock)completion;@end

.m


#import "ImagePickerManager.h"
#import <MobileCoreServices/MobileCoreServices.h>@implementation ImagePickerManager
{UIViewController *_vc;completionImageBlock _comBlock;
}+(ImagePickerManager *)shareManager{static ImagePickerManager *instance = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{instance = [[ImagePickerManager alloc] init];});return instance;
}-(void)showImagePickFromController:(UIViewController *)vcsourceType:(UIImagePickerControllerSourceType)sourceTypeimageMovieSelectedType:(SelectImageMovieType)imageMovieSelectedTypecompletion:(completionImageBlock)completion{[self showImagePickFromAllowsEditing:NOvideoQuality:UIImagePickerControllerQualityTypeLowsourceType:sourceTypemodalPresentationStyle:UIModalPresentationFullScreencontroller:vcisFlash:YESimageMovieSelectedType:imageMovieSelectedTypecompletion:completion];
}-(void)showImagePickFromController:(UIViewController *)vcisEditing:(BOOL)isEditingisFlash:(BOOL)isFlashcompletion:(completionImageBlock)completion{[self showImagePickFromAllowsEditing:isEditingvideoQuality:UIImagePickerControllerQualityTypeLow sourceType:UIImagePickerControllerSourceTypePhotoLibrary modalPresentationStyle:UIModalPresentationFullScreencontroller:vcisFlash:isFlashimageMovieSelectedType:selectImageTypecompletion:completion];
}-(void)showImagePickFromController:(UIViewController *)vccompletion:(completionImageBlock)completion{[self showImagePickFromAllowsEditing:NOvideoQuality:UIImagePickerControllerQualityTypeLow sourceType:UIImagePickerControllerSourceTypePhotoLibrary modalPresentationStyle:UIModalPresentationFullScreencontroller:vcisFlash:YESimageMovieSelectedType:selectImageTypecompletion:completion];
}-(void)showImagePickFromAllowsEditing:(BOOL)allowsEditingvideoQuality:(UIImagePickerControllerQualityType)videoQualitysourceType:(UIImagePickerControllerSourceType)sourceTypemodalPresentationStyle:(UIModalPresentationStyle)modalPresentationStylecontroller:(UIViewController *)vcisFlash:(BOOL)isFlashimageMovieSelectedType:(SelectImageMovieType)imageMovieSelectedTypecompletion:(completionImageBlock)completion{UIImagePickerController *picker = [[UIImagePickerController alloc] init];picker.delegate = self;//可以编辑picker.allowsEditing = allowsEditing;//设置图片质量picker.videoQuality=videoQuality;picker.sourceType = sourceType;picker.modalPresentationStyle = modalPresentationStyle;NSArray *mediaTypes = nil;switch (imageMovieSelectedType) {case selectImageType:{mediaTypes = @[(NSString *)kUTTypeImage];}break;case selectMovieType:{mediaTypes = @[(NSString *)kUTTypeMovie];}break;case selectImageAndMovieType:{mediaTypes = @[(NSString *)kUTTypeImage,(NSString *)kUTTypeMovie];}break;default:break;}picker.mediaTypes = mediaTypes;if (isFlash&&sourceType==UIImagePickerControllerSourceTypeCamera) {picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;}_vc = vc;_comBlock = [completion copy];[_vc presentViewController:picker animated:YES completion:^{}];
}//点击Cancel按钮后执行方法
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{[_vc dismissViewControllerAnimated:YES completion:^{}];
}-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{//主线程等待0.5秒回到根视图dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(0.51 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{if (![_vc.presentedViewController isBeingDismissed]) {[_vc dismissViewControllerAnimated:YES completion:^{}];}});NSString *mediaType = info[UIImagePickerControllerMediaType];if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {UIImage *editedImage = info[UIImagePickerControllerEditedImage];UIImage *originalImage = info[UIImagePickerControllerOriginalImage];UIImage *needImage = nil;if (originalImage) {needImage = originalImage;}if (editedImage) {needImage = editedImage;}if (_comBlock) {_comBlock(needImage);}}else if([mediaType isEqualToString:(NSString *)kUTTypeMovie]){NSURL *videoURL = info[UIImagePickerControllerMediaURL];if (videoURL) {if (_comBlock) {_comBlock(videoURL);}}}
}@end

这篇关于UIAlertController封装(包含iPad)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224372

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

哈希表的封装和位图

文章目录 2 封装2.1 基础框架2.2 迭代器(1)2.3 迭代器(2) 3. 位图3.1 问题引入3.2 左移和右移?3.3 位图的实现3.4 位图的题目3.5 位图的应用 2 封装 2.1 基础框架 文章 有了前面map和set封装的经验,容易写出下面的代码 // UnorderedSet.h#pragma once#include "HashTable.h"

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

Java封装构造方法

private/public的分装 被public修饰的成员变量或者是成员方法,可以被类的调用对象直接使用 而private修饰的成员变量和方法,不能被类的调用对象使用 例如: 可以看到我们是不能在main方法中直接调用被private修饰的变量 当然我们可以在我们定义的TestMode类中可以定一个方法show,然后在调用show方法实现 这里我们可以清楚了解 private 不光可以修

C++数据结构重要知识点(5)(哈希表、unordered_map和unordered_set封装)

1.哈希思想和哈希表 (1)哈希思想和哈希表的区别 哈希(散列、hash)是一种映射思想,本质上是值和值建立映射关系,key-value就使用了这种思想。哈希表(散列表,数据结构),主要功能是值和存储位置建立映射关系,它通过key-value模型中的key来定位数组的下标,将value存进该位置。 哈希思想和哈希表数据结构这两个概念要分清,哈希是哈希表的核心思想。 (2)unordered

OOP三个基本特征:封装、继承、多态

OOP三个基本特征:封装、继承、多态 C++编程之—面向对象的三个基本特征 默认分类 2008-06-28 21:17:04 阅读12 评论1字号:大中小     面向对象的三个基本特征是:封装、继承、多态。     封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。   封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信

Android 优雅封装Glide

文章目录 Android 优雅封装Glide核心思想定义策略接口定义图片选项实现Glide策略图片管理类使用 Android 优雅封装Glide 核心思想 使用策略模式实现不同图片加载框架的切换,使用建造者设计模式处理不同参数,最后通过 ImageLoader 进行管理。 定义策略接口 interface ILoaderStrategy {fun loadImage(co

JS 封装方式

引言:本人是后台服务端开发的,前端的 js 都是在 html 中的 script 标签中写的,处理下数据啥,如果要有需要公共使用的方法啥的都是把方法直接丢在一个 js 文件里,然后 html 引入使用,没有关注过 js 的封装。这天突然对 js 的封装有了兴趣所以有了本文,一下是本人的一些见解。不深见谅。 素材使用的是若依框架中的 ry-ui.js 以及 vue.js ,这里只说封装,不说功能。

el-table 封装表格(完整代码-实时更新)

最新更新时间: 2024年9月6号 1. 添加行内编辑、表头搜索 <template><!-- 简单表格、多层表头、页码、没有合并列行 --><div class="maintenPublictable"element-loading-background="rgba(255,255,255,0.5)"><!--cell-style 改变某一列行的背景色 --><!-- tree-props