How to add UIImageView in UIAlertController?
You could add an image above the title label by subclassing UIAlertController
and adding \n
to the title string to make space for the UIImageView
. You'd have to compute the layout based on the font size. For images in the UIAlertAction
use KVC
like so: self.setValue(image, forKey: "image")
. I would recommend to use an extension that checks for responds(to:)
.
Here is sample implementation.
extension UIAlertAction {
/// Image to display left of the action title
var actionImage: UIImage? {
get {
if self.responds(to: Selector(Constants.imageKey)) {
return self.value(forKey: Constants.imageKey) as? UIImage
}
return nil
}
set {
if self.responds(to: Selector(Constants.imageKey)) {
self.setValue(newValue, forKey: Constants.imageKey)
}
}
}
private struct Constants {
static var imageKey = "image"
}
}
It is not possible to add an image to a UIAlertController
according to Apple Doc.
if you want then you can create your own custom view like:
https://github.com/wimagguc/ios-custom-alertview
If you want to take image appear on button
then Try like this:
UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"Title"
message:@"Welcome"
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* okButton = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action) {
//Do some thing here
}];
[okButton setValue:[[UIImage imageNamed:@"kaga.jpg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forKey:@"image"];
[alert addAction:okButton];
[self presentViewController:alert animated:YES completion:nil];