2015-01-23 4 views
0

Я хочу сделать одно приложение для iPhone 5,6,6+. Итак, каждый элемент должен изменить его. Я не могу изменить размер UITextField.Swift UITextField resize

Единственный способ, который я нашел, - позвонить self.view.addSubview(). Он работает, если я хочу сделать UITextField больше, но не меньше. Как я могу изменить текущий UITextField?

Вы можете что-то предложить?

+3

Разве это не то, что такое автозапуск? https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html – fred02138

+2

Вы должны использовать автозапуск, если вы хотите сделать приложение так легко. Если вы попытались что-то сделать в коде, пожалуйста, покажите свою работу и опишите, как она не ведет себя так, как вы ожидаете. –

+0

Спасибо! Мне нужно это) –

ответ

0

Вы хотите использовать 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 (ложные) на взглядах создаваемых в заказать для них автоматический макет, но НЕ НАЗЫВАЙТЕ это на «родительском» представлении, как основное представление, которое поставляется с контроллером просмотра.

Надеюсь, что это поможет.

+0

Вы можете искать другие строки языка Visual Format для позиционирования. Я просто использовал ширину и высоту, так как у меня уже был хороший пример. – TenaciousJay

+0

Спасибо! я попробую –

Смежные вопросы