2017-04-15 55 views
0

我创建了动态按钮。我需要根据标题文字改变按钮的宽度。这是我的代码。如何在swift 3中基于动态创建按钮的文本设置按钮宽度?

 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() 
    } 

回答

2

试试这个

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 
} 

这会给你标签的框架,你可以设置从您的按钮的高度。

+0

对于3.0我修改这些线'''让标签=的UILabel(帧:的CGRect(X:0,Y:0,宽度:maxWidth,高度:30))''' –

+0

它的working..thank你这么多@Rakshith Nandish –

+0

@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 
}