Подкласс UIView не виден, однако контент виден

Я вложил в подкласс UIView: http://pastebin.com/MVk1XmPS и когда я добавляю его в другой вид UIViewController:

self.myView = MyView.newAutoLayoutView()
self.myView.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myView)

красный фон отсутствует. Кажется, что myView не имеет ширины и высоты. Однако содержание видно:

фото 07 11 14 23 12 36

Я должен жестко указать размер:

self.myView.autoSetDimensionsToSize(CGSize(width: 100, height: 100))

но не должен ли он автоматически расти в зависимости от размера контента? Я использую swift, xcode6.1 и iOS8.1

1 ответ

Решение

Представления не увеличиваются автоматически в соответствии с их содержанием. Если вы включите clipsToBounds по вашему мнению, вы увидите, что контент исчезнет. В качестве альтернативы, если вы поместите кнопку как часть своего контента, вы увидите ее, но не сможете взаимодействовать с ней, потому что она находится за ее пределами. superviewграницы.

В вашем подклассе вы могли бы реализовать sizeToFit или же sizeThatFits: методы, но они не будут автоматически вызываться системой. Вы должны рассмотреть вопрос о назначении ограничений для вашего представления в раскадровке. Если вы не используете раскадровку, вам нужно будет назначить фрейм в viewWillLayoutSubviews или же layoutSubviews метод.

Раскадровке также понравится ваш пользовательский вид, если вы реализуете intrinsicContentSize,

Другие вопросы по тегам