Подкласс UIView не виден, однако контент виден
Я вложил в подкласс UIView: http://pastebin.com/MVk1XmPS и когда я добавляю его в другой вид UIViewController:
self.myView = MyView.newAutoLayoutView()
self.myView.backgroundColor = UIColor.redColor()
self.view.addSubview(self.myView)
красный фон отсутствует. Кажется, что myView
не имеет ширины и высоты. Однако содержание видно:
Я должен жестко указать размер:
self.myView.autoSetDimensionsToSize(CGSize(width: 100, height: 100))
но не должен ли он автоматически расти в зависимости от размера контента? Я использую swift, xcode6.1 и iOS8.1
1 ответ
Представления не увеличиваются автоматически в соответствии с их содержанием. Если вы включите clipsToBounds
по вашему мнению, вы увидите, что контент исчезнет. В качестве альтернативы, если вы поместите кнопку как часть своего контента, вы увидите ее, но не сможете взаимодействовать с ней, потому что она находится за ее пределами. superview
границы.
В вашем подклассе вы могли бы реализовать sizeToFit
или же sizeThatFits:
методы, но они не будут автоматически вызываться системой. Вы должны рассмотреть вопрос о назначении ограничений для вашего представления в раскадровке. Если вы не используете раскадровку, вам нужно будет назначить фрейм в viewWillLayoutSubviews
или же layoutSubviews
метод.
Раскадровке также понравится ваш пользовательский вид, если вы реализуете intrinsicContentSize
,