Xcode – странен проблем с xib и автоматично оформление (xib се разширява до произволна височина)

Имам странно автоматично оформление с проблем с xib файл/клас. Създадох персонализиран изглед на известия (подклас UIView) в Swift, който използва xib файл.

  • Когато устройството е в портретна ориентация при зареждане, известието е добре.
  • Когато завъртя в пейзажен режим, известието отново е наред (въпреки това, взаимодействията с бутоните по някакъв начин стават деактивирани/не отговарят)
  • Когато завъртя обратно към портретна ориентация, изгледът xib (т.е. „сам“) се разширява до произволна височина (забележете „жълтия“ фон, който е зададен от: self.backgroundColor = UIColor .yellowColor()

Нищо в моя код не задава рамката или ограниченията след първоначалното добавяне към контролера на изгледа. Коригирах всяко ограничение за автоматично оформление във файла xib, за което се сетих, и продължавам да имам този проблем.

Ето някои екранни снимки: въведете описание на изображението туквъведете описание на изображението тук


person JimmyJammed    schedule 07.11.2014    source източник


Отговори (2)


Опитайте се да добавите ограничение на височината към изгледа. В края на списъка с ограничения имате: - Вертикално пространство (което предполагам, че е вертикално пространство до върха - Хоризонтално пространство - Хоризонтално пространство - Добавете ограничение на височината за изгледа, така че никога да не променя височината си

person diegomen    schedule 07.11.2014

Добре го реших. Така че проблемът е, че не можете да настроите автоматични справки за оформление в IB от xib към външен UIViewController (тъй като те не знаят един за друг, докато не добавите програмно xib като подизглед). Така че трябва програмно да създадете ограниченията.

Ето как го направих:

    // Manual constraints required since view is a xib file being added to an external view controller
    self.setTranslatesAutoresizingMaskIntoConstraints(false)
    var constraintHeight = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: 44)
    self.addConstraint(constraintHeight)
    var constraintWidth = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.presentingViewController?.view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 1)
    self.presentingViewController?.view.addConstraint(constraintWidth)
    var constraintTop = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: underView, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)
    self.presentingViewController?.view.addConstraint(constraintTop)
person JimmyJammed    schedule 07.11.2014