我一直在嘗試使用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)
}
}