Я пытаюсь создать повторно используемый UIView в Swift, который я могу подключить к моим контроллерам представлений раскадровки. Моя ключевая проблема прямо сейчас заключается в том, что многопользовательский "виджет" UIView не полностью вписывается в поле UIView в раскадровке. Я выполнил этот учебник, чтобы настроить виджет UIView для повторного использования
-
Создал подкласс UIView и соответствующий .xib - и связал их:
import UIKit class MyWidgetView: UIView { @IBOutlet var view: UIView!; required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder); NSBundle.mainBundle().loadNibNamed("MyWidgetView", owner: self, options: nil); self.addSubview(self.view); } }
-
В XIB, который является файлом интерфейса, соответствующим указанному выше коду, я использовал UIView с размером свободной формы в режиме "Моделируемые показатели" и "Масштаб для заполнения в режиме просмотра".
-
В основной раскадровке я добавил блок UIView (ту же прямоугольную форму) и изменил класс на MyWidgetView
-
Он работает, но компоненты, которые я создал в XIB, выглядят в реальном приложении, несмотря на то, что я использовал ограничения компоновки как в XIB, так и в главной раскадровке.
Смотрите скриншот. Розовая часть не должна появляться, так как это только цвет UIVIew на главной раскадровке, которую я добавил, чтобы проверить размер. Этот UIView на самом деле является MyWidgetView (после того, как я изменил класс на шаге 3. Итак, теоретически, поскольку MyWidgetView == UIView на главной раскадровке и что UIView имеет ограничения, которые делают его прямоугольным в супервизоре, тогда почему мой виджет сжимается? Синяя часть внизу должна полностью простираться.