2015-04-11 3 views
0

Я пытаюсь создать многоразовый вид (xib) и использовать его в своем раскадровке с автозапуском. Проблема в том, что он не использует ограничения, которые я установил для него.Autolayout с xib и раскадрой не будет использовать мои ограничения

Так что мой основной НАСТОЯЩЕМУ IOS-проект включает в себя:

  • MyView.swift
  • MyView.xib
  • Main.storyboard
  • ViewController.swift

Класс MyView является подключен к файлу xib надлежащим образом:

import UIKit 

class MyView: UIView { 

    @IBOutlet var View: UIView! 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     NSBundle.mainBundle().loadNibNamed("MyView", owner: self, options: nil) 
     self.addSubview(self.View); 
    } 
} 

В моей раскадровке я добавил UIView (CustomClass = MyView) с двумя простыми ограничениями высоты и ширины. Когда я запускаю приложение, представление не зависит от этих ограничений. Он визуализируется с помощью свойств высоты/ширины в xib.

Есть ли у кого-нибудь подсказка о том, как сделать мое пользовательское представление соответствующим моим ограничениям, которые я установил в своем раскадровке?

ответ

0

Вы говорите, что ваш UIView визуализирован с высотой и шириной xib, когда вы загружаете его с помощью xib? Смысл: xib - это единственное, что вы видите, когда запускаете симулятор? Если это так, я думаю, что простым решением является создание дополнительного UIView, который загружает xib. Сделать NewView подвью MyView Таким образом, у вас есть MyView -> NewView (загружен с xib).

Извините, если это так. Просто немного сложно понять, что вы имеете в виду, не видя этого. Возможно, бросьте снимок экрана или два. Выложил бы это как комментарий, а не ответ, но у меня пока нет репутации.

0

это должно помочь

var contentView = NSBundle.mainBundle().loadNibNamed("MyView", owner: self, options: nil) 
contentView.setTranslatesAutoresizingMaskIntoConstraints(false) 
self.addSubview(contentView) 

    var constTop:NSLayoutConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0); 
    self.view.addConstraint(constTop); 

    var constBottom:NSLayoutConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0); 
    self.view.addConstraint(constBottom); 

    var constLeft:NSLayoutConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0); 
    self.view.addConstraint(constLeft); 

    var constRight:NSLayoutConstraint = NSLayoutConstraint(item: contentView, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0); 
    self.view.addConstraint(constRight); 
Смежные вопросы