2015-09-09 1 views
0

Я изо всех сил пытаюсь понять, как использовать VFL для этого. Я всегда хочу, чтобы кнопка была на 50 пунктов выше нижней части своего супервизора. Я не хочу указывать расстояние между верхней частью нижней части и верхней частью его супервизора, потому что это зависит от разных устройств.Как я могу программным образом добавить ограничение автоопределения, чтобы сделать кнопку на 50 пунктов ниже нижней части своего супервизора?

Я мог найти другие подобные вопросы, используя конструктор интерфейса, но мой проект не использует построитель интерфейсов или быстродействующий, но я хотел бы сделать это программно, в Objective-C.

Заранее спасибо.

ответ

0

использовать что-то вроде этого:

[yourSuperView addConstraint:[NSLayoutConstraint constraintWithItem:yourButton 
                 attribute:NSLayoutAttributeBottom 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:yourSuperView 
                 attribute:NSLayoutAttributeBottomMargin 
                multiplier:1.0 
                 constant:-50.0]]; 

Вы можете прочитать подробнее об этом здесь: Working with Auto Layout Programmatically

+0

Я не думал, чтобы сделать постоянный отрицательный. Конечно! Огромное спасибо. – Liana

1

Если вы не имеете ни малейшего представления о том, как использовать дефектоскоп, я думаю, вы должны проверить документ: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage/VisualFormatLanguage.html

button.translatesAutoresizingMaskIntoConstraints=NO; 
NSArray *constraints=[NSLayoutConstraint constraintsWithVisualFormat:@"V:[button]-50-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]; 
// add more constraints to satisfy auto layout 
[superview addConstraints:constraints]; 

Кстати, я рекомендую использовать масонство, https://github.com/SnapKit/Masonry, это более элегантно.

+0

Спасибо за ответ! Вот как я в конечном итоге это сделал. Я ранее не знал, что могу использовать только одну трубу в VFL. Все примеры и обучающие программы, которые я видел, всегда использовали две трубы в аргументе ограничений, и я ошибочно предположил, что мне также пришлось использовать два, что некоторое время удерживало меня в тупике. Еще раз спасибо! – Liana

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