15.4. Storing Photos in the Photo Library
Problem
You want to be able to store a photo in the user’s photo library.
Solution
Use the UIImageWriteToSavedPhotosAlbum
procedure:
-
(
void
)
imageWasSavedSuccessfully:
(
UIImage
*
)
paramImage
didFinishSavingWithError:
(
NSError
*
)
paramError
contextInfo:
(
void
*
)
paramContextInfo
{
if
(
paramError
==
nil
){
NSLog
(
@"Image was saved successfully."
);
}
else
{
NSLog
(
@"An error happened while saving the image."
);
NSLog
(
@"Error = %@"
,
paramError
);
}
}
-
(
void
)
imagePickerController:
(
UIImagePickerController
*
)
picker
didFinishPickingMediaWithInfo:
(
NSDictionary
*
)
info
{
NSLog
(
@"Picker returned successfully."
);
NSLog
(
@"%@"
,
info
);
NSString
*
mediaType
=
info
[
UIImagePickerControllerMediaType
];
if
([
mediaType
isEqualToString
:
(
__bridge
NSString
*
)
kUTTypeImage
]){
UIImage
*
theImage
=
nil
;
if
([
picker
allowsEditing
]){
theImage
=
info
[
UIImagePickerControllerEditedImage
];
}
else
{
theImage
=
info
[
UIImagePickerControllerOriginalImage
];
}
SEL
selectorToCall
=
@selector
(
imageWasSavedSuccessfully
:
didFinishSavingWithError
:
\contextInfo:
);
UIImageWriteToSavedPhotosAlbum
(
theImage
,
self
,
selectorToCall
,
NULL
);
}
[
picker
dismissViewControllerAnimated
:
YES
completion
:
nil
];
}
-
(
void
)
imagePickerControllerDidCancel:
(
UIImagePickerController
*
)
picker
{
NSLog
(
@"Picker was cancelled"
);
[
picker
dismissViewControllerAnimated
:
YES
completion
:
nil
];
}
-
(
void
)
viewDidAppear:
(
BOOL
)
animated
{
[
super
viewDidAppear
:
animated
];
static
BOOL
beenHereBefore
=
NO
;
if
(
beenHereBefore
){
/* Only display the picker ...
Get iOS 7 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.