Я пытаюсь использовать UISegmentedControl в качестве инструмента выбора с несколькими вариантами выбора. Я думал, что если бы я мог поворачивать его на 90 градусов (а также текст внутри) и расширять ячейки, это было бы очень жидким инструментом. Однако независимо от того, что я пробовал, он продолжает давать мне варианты этого Как повернуть UISegmentedControl и увеличить размер до любого количества текста
Кстати, это внутри UICollectionView. Вот мой код UICollectionViewCell
class customCollectionCell: UICollectionViewCell {
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var questionDescriptionLabel: UILabel!
@IBOutlet weak var viewForSegment: UIView!
var segment: CustomSegmentedControl!
func heightForView(text:String, width:CGFloat) -> CGFloat{
let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.text = text
label.sizeToFit()
return label.frame.height
}
func loadQuestions(choices: [String], pointIndex: [Int]) {
segment = CustomSegmentedControl(items: choices)
segment.transform = CGAffineTransformMakeRotation(CGFloat(M_PI/2.0));
for view in segment.subviews {
for sv in view.subviews {
if sv.isKindOfClass(UILabel){
let subview: UILabel = sv as! UILabel
subview.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI/2.0))
subview.addConstraint(NSLayoutConstraint(item: subview,
attribute: NSLayoutAttribute.Height,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute:NSLayoutAttribute.NotAnAttribute,
multiplier:1,
constant: heightForView(subview.text!, width: self.viewForSegment.frame.width)))
subview.addConstraint(NSLayoutConstraint(item: subview,
attribute: NSLayoutAttribute.Width,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute:NSLayoutAttribute.NotAnAttribute,
multiplier:1,
constant: self.viewForSegment.frame.width))
}
}
}
segment.pointIndex = pointIndex
/*
self.addConstraint(NSLayoutConstraint(item: segment, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.LeftMargin, multiplier: 1, constant: 0))
self.addConstraint(NSLayoutConstraint(item: segment, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.BottomMargin, multiplier: 1, constant: 0))
self.addConstraint(NSLayoutConstraint(item: segment, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.RightMargin, multiplier: 1, constant: 0))
self.addConstraint(NSLayoutConstraint(item: segment, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: questionDescriptionLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 20))
segment.frame = CGRect(origin: CGPoint(x: questionLabel.x, y:), size: segment.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize))
*/
segment.bounds.size = segment.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize)
viewForSegment.addSubview(segment)
viewForSegment.frame.size = viewForSegment.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize)
}
}