Вы хотите использовать Auto Layout и, возможно, Auto Layout’s Visual Format Language.
К будущему доказательству вы можете также использовать Size Classes, но я отвлекся на это.
Я приведу пример того, как это сделать программно для чего-то простого, такого как UILabel, поскольку часть кодирования, кажется, отключает людей больше, чем материал Interface Builder. Если вы хотите пройти этот маршрут, вы можете использовать учебные пособия по автоматическому оформлению интерфейса Google Builder.
Auto Layout использует NSLayoutConstraints для описания того, как один вид выложен относительно другого. Вы можете создать эти ограничения и добавить их в «родительский» вид (содержащий вид, содержащий другие представления). Просмотр контроллера имеет вид по умолчанию с именем «вид», который, вероятно, добавляет большую часть вашего материала, поэтому мы просто добавим ограничения на это. Язык Visual Format немного меньше печатает и немного интуитивно понятен, поэтому я сделаю пример, используя это, но если вы столкнетесь с чем-то, что он не может сделать, вы можете посмотреть, как создать ограничения без языка Visual Format.
Вот пример UILabel с шириной 100 и высотой 50 с помощью Автокомпоновка в визуальном формате Язык:
override func viewDidLoad() {
super.viewDidLoad()
// First add the label to the parent view
let label = UILabel()
label.setTranslatesAutoresizingMaskIntoConstraints(false) // Not needed when using Auto LayoutS
label.text = “Test Label”
label.sizeToFit() // We didn’t pass a frame/rect to UILabel() so this gives it an intrinsic size
view.addSubview(label)
// Create an NSLayoutConstraint for the width and add it to the parent view
let labelWidthConstraint: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:[label(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary) // This uses Auto Layout’s Visual Format Language, which is what the H:[label(100)] part is, and is a *little* simpler than creating constraints normally.
view.addConstraints(labelWidthConstraint)
// Create an NSLayoutConstraint for the height and add it to the parent view
let labelHeightConstraint: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:[label(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
view.addConstraints(labelHeightConstraint)
}
ПРИМЕЧАНИЕ: Вы должны вызвать setTranslatesAutoresizingMaskIntoConstraints (ложные) на взглядах создаваемых в заказать для них автоматический макет, но НЕ НАЗЫВАЙТЕ это на «родительском» представлении, как основное представление, которое поставляется с контроллером просмотра.
Надеюсь, что это поможет.
Разве это не то, что такое автозапуск? https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html – fred02138
Вы должны использовать автозапуск, если вы хотите сделать приложение так легко. Если вы попытались что-то сделать в коде, пожалуйста, покажите свою работу и опишите, как она не ведет себя так, как вы ожидаете. –
Спасибо! Мне нужно это) –