Как заставить UIImageView иметь квадратный размер на основе заданных границ / контейнера - PullRequest
0 голосов
/ 31 октября 2018

Итак, я пытаюсь создать простой UIImageView, чтобы он имел квадратную рамку / размер с CGSize. На основании заданных границ. Например, если контейнер границ имеет ширину и высоту экрана, тогда. Функция должна изменить размер UIImageView, чтобы он выглядел как идеальное квадратное основание на этих границах на экране.

Код:

let myImageView = UIImageView()
myImageView.frame.origin.y = (self.view?.frame.height)! * 0.0
myImageView.frame.origin.x = (self.view?.frame.width)! * 0.0
myImageView.backgroundColor = UIColor.blue
self.view?.insertSubview(myImageView, at: 0)

//("self.view" is the ViewController view that is the same size as the devices screen)

MakeSquare(view: myImageView, boundsOf: self.view)




func MakeSquare(view passedview: UIImageView, boundsOf container: UIView) {

let ratio = container.frame.size.width / container.frame.size.height

if container.frame.width > container.frame.height {
    let newHeight = container.frame.width / ratio
    passedview.frame.size = CGSize(width: container.frame.width, height: newHeight)
} else{
    let newWidth = container.frame.height * ratio
    passedview.frame.size = CGSize(width: newWidth, height: container.frame.height)
 }
}

Проблема в том, что он возвращает мне те же границы / размер контейнера и не изменяется

Примечание: Я действительно знаю, как это осуществить, но хотел посмотреть, возможно ли это. Моя функция исходит из вопроса здесь . Это берет UIImage и изменяет размеры его родительского представления, чтобы сделать изображение квадратным.

1 Ответ

0 голосов
/ 31 октября 2018

Это должно сделать это (и центрирует представление изображения в содержащем представлении):

func makeSquare(view passedView: UIImageView, boundsOf container: UIView) {
    let minSize = min(container.bounds.maxX, container.bounds.maxY)
    passedView.bounds = CGRect(x: container.bounds.midX - minSize / 2.0, 
        y: container.bounds.midY - minSize / 2.0, 
        width: minSize, height: minSize)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...