Я пытаюсь сделать игру Connect Four, и все работает нормально, за исключением того, что соотношение сторон на моей плате отличается, когда на iPad и когда на iPhone, и я не могу понять проблему , Это вызывает у меня проблемы, потому что я полагаюсь на соотношение сторон, чтобы иметь возможность рассчитать положение фигур, когда я их сбрасываю на доску.
Я сделал базовый c пример проблемы, и код выглядит следующим образом
override func viewDidLoad() {
super.viewDidLoad()
let guide = view.safeAreaLayoutGuide
let bottomView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
bottomView.backgroundColor = .red
bottomView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bottomView)
NSLayoutConstraint.activate([
bottomView.bottomAnchor.constraint(equalTo: guide.bottomAnchor),
bottomView.leadingAnchor.constraint(equalTo: guide.leadingAnchor),
bottomView.trailingAnchor.constraint(equalTo: guide.trailingAnchor),
bottomView.heightAnchor.constraint(equalToConstant: 120)
])
let image = UIImage(named: "Frontground")
imageView = UIImageView(image: image)
imageView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(imageView)
NSLayoutConstraint.activate([
imageView.trailingAnchor.constraint(equalTo: guide.trailingAnchor),
imageView.leadingAnchor.constraint(equalTo: guide.leadingAnchor),
imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 329/389),
imageView.bottomAnchor.constraint(equalTo: bottomView.topAnchor, constant: -32)
])
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let desiredAspectRatio = CGFloat(CGFloat(389)/CGFloat(329))
let actualAspectRatio = imageView.frame.size.width/imageView.frame.size.height
print("Desired Aspect Ratio is \(desiredAspectRatio), actual Aspect ratio is \(actualAspectRatio)")
}
Используемое изображение имеет ширину 389 и высоту 329, и я хочу поддерживать эти отношения на всех устройствах.
Соотношение сторон на iPad не ТАКОЕ далекое, но этого достаточно, чтобы кусочки в конечном итоге не помещались точно в отверстия. Все отлично работает на iPhone версиях, хотя, хотя у меня соотношение сторон не точное, возможно, из-за того, что экран меньше, проблемы не так заметны.
Вот пример изображения, которое я использовал.
Когда я бегу на iPhone, я получаю: Требуемое соотношение сторон равно 1.182370820668693, фактическое соотношение сторон равно 1.1828571428571428
Когда Я запускаю на iPad, который я получаю: Требуемое соотношение сторон - 1.182370820668693, Фактическое соотношение сторон - 1.1824817518248176
Есть ли у меня возможность получить точное соотношение сторон, которое я хочу?
Любая помощь по вопрос будет принята с благодарностью.
Спасибо, Алан