UISegmentedControl标签不适合

时间:2017-07-22 01:41:44

标签: ios swift3 uisegmentedcontrol

使用UISegmentedControl时,我在装入所有标签时遇到问题,正好是日语。 我没有注意到与此时使用的其他语言相同的问题。 这是我的代码:

    interfaceChoice = UISegmentedControl(items: ["白黒モード", "緑赤青・モード"])

    for i in 0..<interfaceChoice.subviews.count {
        interfaceChoice.subviews[i].tintColor = localColor

        for subSubView in interfaceChoice.subviews[i].subviews {
            if subSubView is UILabel {
                (subSubView as! UILabel).adjustsFontSizeToFitWidth = true
            }
        }
    }

我希望行.adjustsFontSizeToFitWidth ...会解决问题,但它不起作用,如下图所示。 任何人都有一个想法,因为我做错了什么?

enter image description here

1 个答案:

答案 0 :(得分:1)

enter image description here

故事板示例

这就是我做到的。

  1. 在故事板中,将分段控件拖放到视图控制器的标题区域中。
  2. enter image description here

    1. 将分段控件链接到视图控制器中的IBOutlet。

    2. 此代码

      class ViewController: UIViewController {
      
          @IBOutlet weak var interfaceChoice: UISegmentedControl!
      
          override func viewDidLoad() {
              super.viewDidLoad()
      
              interfaceChoice.removeAllSegments()
              interfaceChoice.insertSegment(withTitle: "白黒モード", at: 0, animated: false)
              interfaceChoice.insertSegment(withTitle: "緑赤青・モード", at: 1, animated: false)
              interfaceChoice.selectedSegmentIndex = 0
              let font = UIFont.boldSystemFont(ofSize: 16)
              interfaceChoice.setTitleTextAttributes([NSFontAttributeName: font], for: .normal)
      
              interfaceChoice.tintColor = UIColor(red: 27/CGFloat(255), green: 77/CGFloat(255), blue: 102/CGFloat(255), alpha: 1.0)
          }
      }
      
    3. 注意:我不会假装确切地知道为什么它不适合你,但我希望这可以帮助你。如果确定您的确切情况绝对必要,我想我们可能需要更多信息。

      纯代码示例

      这会产生与在故事板中设置相同的结果。

          class ViewController: UIViewController {
      
              var interfaceChoice: UISegmentedControl!
      
              override func viewDidLoad() {
                  super.viewDidLoad()
      
                  interfaceChoice = UISegmentedControl(items: ["白黒モード", "緑赤青・モード"])
                  interfaceChoice.selectedSegmentIndex = 0
                  let font = UIFont.boldSystemFont(ofSize: 16)
                  interfaceChoice.setTitleTextAttributes([NSFontAttributeName: font], for: .normal)
      
                  interfaceChoice.tintColor = UIColor(red: 27/CGFloat(255), green: 77/CGFloat(255), blue: 102/CGFloat(255), alpha: 1.0)
      
                  self.navigationItem.titleView = interfaceChoice
              }
          }