Cómo utilizar la cámara y el álbum de fotos de iOS con elegancia
Descripción general
Tanto la cámara como el álbum de fotos de iOS dependen del controlador de selección de imágenes UIImagePickerController. Al usar este controlador, debemos seguir los siguientes pasos.
Verificar si el tipo de recurso especificado está disponible
Verificar si el tipo de recurso especificado admite el tipo de medio especificado
Inicializar el estado de autorización del usuario para cámaras y álbumes de fotos
Compruebe si el tipo de recurso especificado admite el tipo de medio especificado
// Tome "Comprobar si el tipo de cámara del selector de imágenes está disponible" como ejemplo
if ([UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeCamera])
{
// Tipo de cámara disponible
}
else
{ p>
// El tipo de cámara no está disponible
}1234567891012345678910
Compruebe si el tipo de medio especificado es compatible con el tipo de recurso especificado
Este paso se utiliza para comprobar si un tipo de medio específico es compatible con un tipo de recurso específico, por ejemplo, si el iPhone puede tomar LivePhoto
Los tipos de medios del controlador de selección de imágenes se dividen principalmente en dos categorías: tipo de imagen y tipo de vídeo
kUTTypeImage (tipo de imagen, subdividido en kUTTypeJPEG, kUTTypeGIF, kUTTypeLivePhoto, etc.
kUTTypeMovie (tipo de vídeo, subdividido en kUTTypeMovie, kUTTypeMP3, kUTTypeAVIMovie , etc.) 1212
Nota 1: Medios El tipo se define en forma de constante y debe introducirse en el marco de MobileCoreServices
Nota 2: La constante de tipo de medios. es de tipo CFString y debe convertirse al tipo NSString cuando se usa.
Podemos usar availableMediaTypesForSourceType: el método devuelve los tipos de medios admitidos según el MediaTypesForSourceType especificado: el método devuelve la matriz de tipos de medios admitidos. el tipo de fuente especificado
// Tome "Compruebe si el selector de imágenes admite el tipo de imagen en el tipo de cámara" como ejemplo,
//Devuelve la matriz de tipos de medios admitidos en el tipo de cámara
NSArray *availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerSourceTypeCamera];
//Determine si hay algún elemento kUTTypeImage en la matriz (NSString *)
if ([availableMediaTypes containsObject: (NSString *)kUTTypeImage])
{
// Tipos de imágenes disponibles
}
else
{
// Tipo de imagen no disponible
}1234567891011121312345678910111213
Comprueba el estado de autorización del usuario para la cámara y el álbum de fotos
Este paso determina si aparece el selector de imágenes según el estado de autorización del usuario. Por ejemplo, el estado de autorización del usuario es "...". ej., se deniega el estado de autorización del usuario.
Verifique el estado de autorización del usuario para la cámara
Nota: Es necesario introducir AVFoundation.Framework
. Es necesario introducir el marco
Hay dos tipos de medios de cámara comunes
AVMediaTypeVideo (tipo de medio de video)
AVMediaTypeAudio (tipo de medio de audio) 1212
El estado de autorización del usuario para la cámara es una enumeración, y hay cuatro tipos de enumeraciones
AVAuthorizationStatusNotDetermined // El usuario no ha elegido si autoriza el uso de la cámara.
AVAuthorizationStatusRestricted // El usuario tiene prohibido usar la cámara y el estado de autorización no se puede cambiar, posiblemente debido al control parental
AVAuthorizationStatusDenied // Al usuario se le ha prohibido usar la cámara
AVAuthorizationStatusAuthorized // El usuario ha sido autorizado a usar 12341234
Podemos usar el método AuthorizationStatusForMediaType: para devolver el estado de autorización del usuario para el tipo de medio de cámara especificado
//Para "verificar el estado de autorización del usuario para el tipo de medio de vídeo"
//Para "verificar el estado de autorización del usuario para el tipo de medio de vídeo". AuthorizationStatusForMediaType: el método devuelve el estado de autorización del usuario para la cámara especificada tipo de medio
AVAuthorizationStatus AuthorizationStatus = [AVCaptureDevice AuthorizationStatusForMediaType: AVMediaTypeVideo];
// Proceso de operación para manejar diferentes estados de autorización
cambio (authorizationStatus)
{
case AVAuthorizationStatusNotDetermined:
{
p>// El usuario no ha elegido si autoriza el uso
}
break;
case AVAuthorizationStatusRestricted:
{ p>
// El usuario está prohibido y el estado de autorización no se puede cambiar, posiblemente debido a controles parentales
}
pausa;
case AVAuthorizationStatusDenied:
{
// // Al usuario se le deniega el acceso al dispositivo
}
Al usuario se le deniega el acceso al dispositivo
// Al usuario se le deniega el acceso al dispositivo.
>
}
break;
case AVAuthorizationStatusAuthorized:
{
// El usuario ha sido autorizado usar
}
break;
}1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728
el estado de autorización de la cámara es AVAuthorizationStatusNotDetermined, debe usar requestAccessForMediaType:completionHandler : requisitos de la ventana emergente del método El usuario elige si autoriza, en lugar de abrir directamente el controlador de selección de imágenes, el sistema abre automáticamente una ventana preguntando al usuario si autoriza o no
// Tomar " ventana emergente que solicita al usuario que elija si desea autorizar" como ejemplo
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completeHandler: ^(BOOL concedido) {
if(concedido)
{
// El usuario está autorizado a utilizarlo
}
más
{
// El usuario tiene prohibido usarlo
}
}];123456789101112123456789101112<
Nota 1: Esta ventana emergente solo se muestra cuando el el estado de autorización es AVAuthorizationStatusNotDetermined
Nota 2: esta ventana emergente solo se muestra cuando el estado de autorización es AVAuthorizationStatusNotDetermined
Nota 3: esta ventana emergente solo se muestra cuando el estado de autorización es AVAuthorizationStatusNotDetermined
Nota 4: Esta ventana emergente solo se muestra cuando el estado de autorización es AVAuthorizationStatusNotDetermined
Nota 5: Esta ventana emergente solo se muestra cuando el estado de autorización es AVAuthorizationStatusNotDetermined
: Esta ventana emergente solo se muestra cuando se usa AVCaptureDeviceInput y el estado de autorización es Nota 2: Esta ventana emergente se muestra automáticamente cuando se usa AVCaptureDeviceInput y el estado de autorización es AVAuthorizationStatusNotDetermined
Verifique el estado de autorización del usuario para el álbum
Nota: es necesario presentar el marco AssetsLibrary
El estado de autorización del usuario para el álbum es una enumeración que incluye las siguientes cuatro categorías<. /p >
ALAuthorizationStatusNotDetermined // El usuario no ha elegido si desea autorizar el álbum
ALAuthorizationStatusRestricted // El usuario tiene prohibido usar el álbum y el estado de autorización no se puede modificar, posiblemente debido a una decisión parental. control
ALAuthorizationStatusDenied // El usuario está denegado
ALAuthorizationStatusAuthorized // El usuario ha sido autorizado a usar 12341234
Podemos usar el método AuthorizationStatus para devolver el estado de autorización del álbum
.
Podemos usar el método AuthorizationStatus para devolver el estado de autorización del usuario para el álbum
// Tome "Verificar el estado de autorización del usuario para el álbum" como ejemplo
// Devolver el estado de autorización del usuario para el álbum. estado de autorización para el álbum
ALAuthorizationStatus AuthorizationStatus = [ALAssetsLibrary AuthorizationStatus];
// Maneja el proceso de operación bajo diferentes estados de autorización
cambio (authorizationStatus) p>
{
case ALAuthorizationStatusNotDetermined:
{
// El usuario no ha elegido si autoriza o no el uso
}
break;
case ALAuthorizationStatusRestricted:
{
// El usuario está baneado y el estado de autorización no se puede cambiar , posiblemente debido al control parental
}
interrupción;
case ALAuthorizationStatusDenied:
{
// // Al usuario se le niega el acceso al dispositivo
}
// Al usuario se le niega el acceso al dispositivo
. >
}
break;
case ALAuthorizationStatusAuthorized:
{
// El usuario ha sido autorizado utilizar
}
break;
}1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728
En Inicializar y expulsar el controlador de selección de imágenes
Inicializar el controlador de la cámara
// Crear un objeto controlador de selección de imágenes
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
// Establezca el tipo de recurso en tipo de cámara
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
//Establezca el tipo de medio en tipo de imagen y tipo de video (si solo se escribe un tipo en la matriz, image El controlador selector solo permite fotos/videos), permiteEditar = YES;
//Establece la calidad de la imagen de la cámara, el valor predeterminado es UIImagePickerControllerQualityTypeMedium
picker.videoQuality = UIImagePickerControllerQualityTypeHigh;
//Establece el tiempo máximo de vídeo, el valor predeterminado es 10 segundos.
picker.videoMaximumDuration = 30;
// Para configurar el proxy, debe cumplir con los dos protocolos
picker.delegate = self;
// Controlador de selección de imágenes emergentes
[self presentViewController:picker animado:SÍ finalización:nil]; ; /p>
UIImagePickerController *picker = [[ UIImagePickerController alloc] init];
//Establece el tipo de recurso en el tipo de álbum
picker.sourceType = UIImagePickerController *picker .sourceType = UIImagePickerController = [[ UIImagePickerController alloc] init];
UIImagePickerControllerMediaType // Tipo de medio (kUTTypeImage, kUTTypeMovie, etc.).
UIImagePickerControllerOriginalImage // Imagen original
UIImagePickerControllerEditedImage // Imagen editada
UIImagePickerControllerCropRect // Tamaño de recorte
UIImagePickerControllerMediaMetadata // Metadatos de la foto Datos