首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多行UISegmentedControl文本

多行UISegmentedControl文本
EN

Stack Overflow用户
提问于 2016-08-10 15:10:04
回答 2查看 3.1K关注 0票数 4

是否有可能在iOs 9+中使用多行文本制作9+?

到目前为止,我已经尝试过:

  1. SO主题的变体:This, this and this one
  2. 延期: 扩展UISegmentedControl { func makeMultiline( numberOfLines : Int) { self.subviews中的段{ let标签= segment.subviews.filter { $0是UILabel } // AnyObject labels.map { ($0 as UILabel).numberOfLines =numberOfLines}
  3. 从UISegmentedControl继承并在标识检查器中将新类设置为SegmentedControl 类MultilineSegmentedControl: UISegmentedControl { override (){用于子视图中的段{ segment.subviews中的子视图,{如果让segmentLabel =子视图为?UILabel { segmentLabel.numberOfLines =2}
  4. 用文本代替UISegmentedControl的标题和更改帧设置图像 viewDidLayoutSubviews() 方法。它使UISegmentedControl的高度更大,但是图像保持了它的高度,就好像UISegmentedControl没有放大一样,在第一次交互中,UISegmentedControl缩小到它的默认高度。
EN

回答 2

Stack Overflow用户

发布于 2017-11-10 12:20:05

尝试下面的代码,找出所有的segmentedControl子UILabel并设置numberOfLines

代码语言:javascript
复制
for segmentViews in segmentedControl.subviews {
    for segmentLabel in segmentViews.subviews {
        if segmentLabel is UILabel {
            (segmentLabel as! UILabel).numberOfLines = 0
        }
    }
}
票数 5
EN

Stack Overflow用户

发布于 2017-01-26 16:46:48

也许现在有点晚了,但是这里是我的子类,它可以快速地解决这个问题:

代码语言:javascript
复制
@IBDesignable class MySegmentedControl: UISegmentedControl {

    @IBInspectable var height: CGFloat = 29 {
        didSet {
            let centerSave = center
            frame = CGRect(x: frame.minX, y: frame.minY, width: frame.width, height: height)
            center = centerSave
        }
    }

    @IBInspectable var multilinesMode: Bool = false

    override func layoutSubviews() {
        super.layoutSubviews()
        for segment in self.subviews {
            for subview in segment.subviews {
                if let segmentLabel = subview as? UILabel {
                    segmentLabel.frame = CGRect(x: 0, y: 0, width: segmentLabel.frame.size.width, height: segmentLabel.frame.size.height * 1.6)
                    if (multilinesMode == true)
                    {
                        segmentLabel.numberOfLines = 0
                    }
                    else
                    {
                        segmentLabel.numberOfLines = 1
                    }
                }
            }
        }
    }

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38877276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档