【问题标题】:How to set button width based on text for dynamically created button in swift 3?如何根据文本为swift 3中动态创建的按钮设置按钮宽度?
【发布时间】:2017-09-11 09:04:17
【问题描述】:

我创建了动态按钮。我需要根据标题标签文本更改按钮的宽度。这是我的代码。

       for i in 0..<holdingSize { 
       let button = UIButton(type: .custom)

        if i == 0 {
            frame = CGRect(x: 10, y: 5, width: 100, height: 30)
        }else{
            buttonY = buttonY + 110
            frame = CGRect(x: buttonY, y: 5, width: 100, height: 30)
        }
        button.setTitle("\(arrayOfHoldings[i])", for: UIControlState.normal) // We are going to use the item name as the Button Title here.
        button.titleLabel?.text = "\(arrayOfHoldings[i])"
        button.titleLabel?.font = UIFont(name: (button.titleLabel?.font.fontName)!, size: 15)
        button.setTitleColor(Colors.green, for: .normal)
        button.sizeToFit()
    }

【问题讨论】:

    标签: swift dynamic uibutton width


    【解决方案1】:

    试试这个

    func labelSizeWithString(text: String,fontSize: CGFloat, maxWidth : CGFloat,numberOfLines: Int) -> CGRect{
    
        let font = UIFont.systemFontOfSize(fontSize)//(name: "HelveticaNeue", size: fontSize)!
        let label = UILabel(frame: CGRectMake(0, 0, maxWidth, CGFloat.max))
        label.numberOfLines = numberOfLines
        label.font = font
        label.text = text
    
        label.sizeToFit()
    
        return label.frame
    }
    

    这将为您提供标签的框架,您可以从中设置按钮的高度。

    【讨论】:

    • 对于 3.0 我修改这些行 let label = UILabel(frame: CGRect(x: 0, y: 0, width: maxWidth, height: 30))
    • @SathishKumar 太棒了!如果您将此标记为正确答案,将不胜感激 buddy.cheers! :)
    【解决方案2】:
    FOR SWIFT 3.0
    
    func labelSize(for text: String,fontSize: CGFloat, maxWidth : CGFloat,numberOfLines: Int) -> CGRect{
    
        let font = UIFont.systemFont(ofSize: fontSize)//(name: "HelveticaNeue", size: fontSize)!
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: maxWidth, height: CGFloat.leastNonzeroMagnitude))
        label.numberOfLines = numberOfLines
        label.font = font
        label.text = text
    
        label.sizeToFit()
        return label.frame
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2017-06-01
      • 2013-07-17
      • 2017-05-23
      相关资源
      最近更新 更多