без линии

учаю изображения с разрешением 1920x1080. Я пытаюсь обрезать их до центральной площади квадрата (т.е. 1080x1080 квадрата в центре). Разрешение может измениться в будущем. Можно ли обрезать изображение таким образом? Я попробовал пару вещей, размещенных на SO, но я всегда получаю изображение размером 660x1080, если я пытаюсь обрезать его по центру. Вот изображение, изображающее то, чего я хочу достичь.

По сути, красный - оригинал, зеленый - то, что я хочу, а желтый - просто линии mixX и midY.

Код, который я пробовал.

func imageByCroppingImage(image: UIImage, toSize size: CGSize) -> UIImage{
    let newCropWidth: CGFloat?
    let newCropHeight: CGFloat?

    if image.size.width < image.size.height {
        if image.size.width < size.width {
            newCropWidth = size.width
        } else {
            newCropWidth = image.size.width
        }
        newCropHeight = (newCropWidth! * size.height) / size.width
    } else {
        if image.size.height < size.height {
            newCropHeight = size.height
        } else {
            newCropHeight = image.size.height
        }
        newCropWidth = (newCropHeight! * size.width) / size.height
    }

    let x = image.size.width / 2.0 - newCropWidth! / 2.0
    let y = image.size.height / 2.0 - newCropHeight! / 2.0

    let cropRect = CGRect(x: x, y: y, width: newCropWidth!, height: newCropHeight!)
    let imageRef = image.cgImage!.cropping(to: cropRect)

    let cropped = UIImage(cgImage: imageRef!, scale: 1.0, orientation: .right)
    return cropped
}

И затем я передаю этот метод CGSize (1080, 1080). Я получаю изображение 660, 1080. Есть мысли?

Намерение состоит в том, чтобы обрезать изображение, а не просто отображать его по центру.

Ответы на вопрос(1)

Ваш ответ на вопрос