Как изменить дизайн в соответствии с размером экрана, используя NSLayoutConstraint в Swift - PullRequest
0 голосов
/ 10 октября 2019

Я разработал экран с использованием ограничений раскадровки для iPhone XR, но этот дизайн стал большим в iPhone7, поэтому я хочу изменить высоту и ширину моего ContainerView с помощью NSLayoutConstraints.

У меня естьпринято:

@IBOutlet weak var containerViewheight: NSLayoutConstraint!

Эта ContainerView фактическая высота в iPhoneXR равна 300, поэтому я хочу изменить ее в iPhone7

Например:

if (iphone7) {
  self.containerViewheight.constant = 240
}

if (iphone SE) {
  self.containerViewheight.constant = 280
}

К сожалению, яочень мало разбираюсь в классах размера.

1 Ответ

1 голос
/ 10 октября 2019

Вы всегда можете запросить у UIScreen метода класса main текущий конкретный размер, он возвращает конкретный размер текущего устройства.

let deviceSize = UIScreen.main.bounds.size

Но вы, вероятно, знаете, что heightи width изменяются в зависимости от ориентации устройства (альбомной или книжной).

Возможно, это расширение может помочь:

import UIKit

extension UIScreen {

    /// Retrieve the (small) width from portrait mode
    static var portraitWidth : CGFloat { return min(UIScreen.main.bounds.width, UIScreen.main.bounds.size.height) }

    /// Retrieve the (big) height from portrait mode
    static var portraitHeight : CGFloat { return max(UIScreen.main.bounds.size.width, UIScreen.main.bounds.size.height)  }

    /// Retrieve the (big) width from landscape mode
    static var landscapeWidth : CGFloat { return max(UIScreen.main.bounds.size.width, UIScreen.main.bounds.size.height) }

    /// Retrieve the (small) height from landscape mode
    static var landscapeHeight : CGFloat { return min(UIScreen.main.bounds.size.width, UIScreen.main.bounds.size.height) }
}
...