У меня UISegmentedControl определен программно.Добавление NSLayoutConstraints в UISegmentedControl приводит к исчезновению UISegmentedControl
Я пытаюсь добавить ограничение макета, так что, когда мой iPad вращается, сегментированный элемент управления правильно размещается в повернутом виде, а не проливает экран.
применяет следующее ограничение:
streamSegmentedControl.translatesAutoresizingMaskIntoConstraints = false
let segmentedControlWidth = NSLayoutConstraint(item: streamSegmentedControl,
attribute: .Width,
relatedBy: .Equal,
toItem: self.containerView,
attribute: .Width,
multiplier: 1.0,
constant: -10.0)
containerView.addConstraint(segmentedControlWidth)
Моего UIsegmentControl определяются следующим образом:
streamSegmentedControl = UISegmentedControl(items: ["Today's Events", "Past Events"])
streamSegmentedControl.frame = CGRectMake(-10,containerView.frame.size.height*0.3,containerView.frame.width+20,40)
streamSegmentedControl.selectedSegmentIndex = 0
streamScope = "today"
streamSegmentedControl.setTitleTextAttributes(segmentedControlFont as [NSObject : AnyObject], forState: .Normal)
streamSegmentedControl.backgroundColor = UIColor.colorFromClass("background")
streamSegmentedControl.tintColor = UIColor.colorFromClass("default")
streamSegmentedControl.addTarget(self, action: "changeStreamScope:", forControlEvents: UIControlEvents.ValueChanged)
containerView.addSubview(streamTableView)
containerView.addSubview(streamSegmentedControl)
Я не получаю сообщение об ошибке, но во время выполнения, мое сегментированное управление исчезает. Не уверен, что мне здесь не хватает, поскольку в прошлом я только делал автомасштабирование в раскадровки.
Я только хочу, чтобы иметь возможность регулировать ширину сегментированного элемента управления, поэтому я предполагаю, что мне нужно только одно ограничение компоновки.
Может ли кто-нибудь дать мне какое-то направление? Благодарю.
Спасибо. Я не уверен, что это имело какое-то значение. Я получаю следующую ошибку времени выполнения: иерархия представления не подготовлена к ограничению. При добавлении в представление элементы ограничения должны быть потомками этого представления (или самого представления). Это приведет к сбою, если ограничение должно быть разрешено до того, как будет собрана иерархия представления. – Jeremy
Убедитесь, что вы добавили сегментированный контроль в иерархии, прежде чем добавлять ограничения – BangOperator
Спасибо. Он добавлен в представление контейнера: containerView.addSubview (streamSegmentedControl) – Jeremy