Extension UIAlertController


#1

Создал swift file с расширением что бы добавлять и изменять размеры image в alertController:
почему данные типа size, alwaysOriginal и так д. не голубым цветом?

import UIKit

extension UIAlertController {

func addImage(image: UIImage)  {
    let maxSize = CGSize(width: 245, height: 300)
    let imgSize = image.size
    
    var ratio: CGFloat!
    if imgSize.width > imgSize.height  {
        ratio = maxSize.width / imgSize.width
    } else {
        ratio = maxSize.height / imgSize.height
    }
    
    let scaledSize = CGSize(width: imgSize.width * ratio, height: imgSize.height * ratio)
    var resizedImage = image.imageWithSize(scaledSize)
    
    if (imgSize.height > imgSize.width) {
        let left = (maxSize.width - resizedImage.size.width) / 2
        resizedImage = resizedImage.withAlignmentRectInsets(UIEdgeInsetsMake(0, -left, 0, 0))
        
    }
    
    let imgAction = UIAlertAction (title: "", style: .default, handler: nil)
    imgAction.isEnabled = false
    imgAction.setValue(image.withRenderingMode(.alwaysOriginal), forKey: "image")
    self.addAction(imgAction)
}

}

в alertController добавил:
let image = UIImage(named: “test-img-1”)
alertController.addImage(image: image!)

не получается уменьшить image и получается вот что:


#2

Ну вот, как всегда бывает с утра сразу увидел вчерашние ошибки. Вопрос решен. Банальная невнимательность.


#3

Напишите пожалуйста где ошибки - это пригодится многим в будущем, когда у них возникнет такой же вопрос.


#4

Вот правильное решение

import UIKit

extension UIAlertController {

func addImage(image: UIImage)  {
    let maxSize = CGSize(width: 245, height: 300)
    let imgSize = image.size
    
    var ratio: CGFloat!
    if (imgSize.width > imgSize.height)  {
        ratio = maxSize.width / imgSize.width
    } else {
        ratio = maxSize.height / imgSize.height
    }
    
    let scaledSize = CGSize(width: imgSize.width * ratio, height: imgSize.height * ratio)
    
    var resizedImage = image.imageWithSize(scaledSize)
    
    if (imgSize.height > imgSize.width) {
        let left = (maxSize.width - resizedImage.size.width) / 2
        resizedImage = resizedImage.withAlignmentRectInsets(UIEdgeInsetsMake(0, -left, 0, 0))
    }

    let imgAction = UIAlertAction(title: "", style: .default, handler: nil)
    imgAction.isEnabled = false
    imgAction.setValue(resizedImage.withRenderingMode(.alwaysOriginal), forKey: "image")
    self.addAction(imgAction)
    
}

}