2015-07-15 4 views
2

У меня есть мнение, которое имеет UILabel, UITableView (tblFilters) и UIView (btnBaseView) (держать три других UIButtons) Пожалуйста проверите изображение ниже: - enter image description hereAutolayout Ограничения Приоритет не Разрешающая

мне нужно расширить tblFilters высоту, чтобы продемонстрировать возможности для каждой категории, но нужно иметь btnBaseView всегда видны на экране. Таким образом, высота tblFilters не должна превышать лимит.

Для этого я наложил высоту на btnBaseView и дал ей Обязательно приоритет. Точно так же tblFilters имеет ограничение по высоте, но DefaultHigh приоритет.

// Height Constraint of btnBaseView. Height Should always be >=116 
    btnSectionHeightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[btnBaseView(>=116)]" options:0 metrics:nil views:@{@"btnBaseView":btnBaseView}]; 
    [[btnSectionHeightConstraint firstObject] setPriority:UILayoutPriorityRequired]; 
    [self addConstraints:btnSectionHeightConstraint]; 


// TableView Height Constraint. Height value is being changed when user click on "+" button of table section. 
    tableHeightConstraints = [NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[tblFilters(>=%f)]",176.0] options:0 metrics:nil views:@{@"tblFilters":tblFilters}]; 
    [[tableHeightConstraints firstObject] setPriority:UILayoutPriorityDefaultLow]; 
    [self addConstraints:tableHeightConstraints]; 

Но эта схема не кажется, работает, как Tableview покрывает всю BaseView и протолкнул btnBaseView из видимой области.

Я попытался сохранить приоритет DefaultLow до tblFilters, но без эффекта. Когда я отлаживаю код после изменения ограничения по высоте tblFilters, он печатает правильный вывод приоритета в консоли, но не влияет на представление.

Может кто-нибудь, пожалуйста, помогите мне в определении проблемы, почему приоритет ограничения не работает должным образом или я неправильно понимаю эту концепцию. Любая помощь приветствуется.

ответ

1
  1. набор tblFilters высота приоритет ограничение, чтобы быть UILayoutPriorityDefaultHigh
  2. установить btnBaseView верхнее поле ограничения, связанные с tblFilters к 0
  3. установить btnBaseView нижнее поле ограничения, связанные с bottomView быть >= 0

а затем изменить ограничение высоты tblFilters, соответствующего данным

tableHeightConstraints.constant = someValue 
view.layoutIfNeeded() 

enter image description here

+0

Спасибо за ответ. Я уже применял первое ограничение 2, теперь я добавил третий. Тем не менее он не работает. – Gandalf

+0

Мне интересно. Это 2 ограничения в вопросе? потому что мое предложенное ограничение не совпадает с вашим. – nRewik

+0

Не совсем, я применил множество других ограничений, связанных с каждым выравниванием и интервалом управления. В вопросе я упомянул только о соответствующих. – Gandalf

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