2016-05-08 3 views
0

Согласно this answer, я могу использовать intrinsicContentSize для автоматического расчета ширины/высоты. Вот что я сделал, но результат 0, 0Как рассчитать ширину и высоту UIButton с учетом текста и шрифта?

class AutoSizeUIButton: UIButton{ 
    override func intrinsicContentSize() -> CGSize { 
     return CGSizeMake(self.frame.size.width, self.titleLabel!.frame.size.height) 
    } 
} 


networkButton.setTitle("something-here", forState: .Normal) 
networkButton.titleLabel?.font = UIFont(name: "HelveticaNeue", size: 20.0)! 
let networkSize = networkButton.intrinsicContentSize() 
print("button size", networkSize.width, networkSize.height) //prints 0.0, 0.0 

я делаю что-то не так? Примечание. Я не хочу использовать ограничения. Я просто хочу напечатать ширину/высоту.

+0

Попробуйте этот код UIFont * font = [UIFont fontWithName: @ "Helvetica" size: 30]; NSDictionary * userAttributes = @ {NSFontAttributeName: font, NSForegroundColorAttributeName: [UIColor blackColor]}; NSString * text = @ "hello"; ... const CGSize textSize = [text sizeWithAttributes: userAttributes]; –

ответ

1

Попробуйте networkButton.sizeThatFits.

let networkSize = networkButton.sizeThatFits(CGSizeZero) 
print("button size", networkSize.width, networkSize.height) 

(. Параметр, передаваемый sizeThatFits часто игнорируется, и плохо документированы, я не уверен, что если CGSizeZero работает везде - может быть, вы должны пройти сколь угодно большого размера)

+0

Можете ли вы показать мне в коде точный порядок? – TIMEX

0

Попробуйте это:

networkButton.sizeToFit() 

Теперь размер кнопки Network подходит для текста

Смежные вопросы