2016-02-16 1 views
0

Это изображение показывает, что я пытаюсь достичь:Размера фитинга текстовых соответствовать размеру кнопки

enter image description here

Я указав ширину 2 кнопки, чтобы быть такими же, как 0,4 * redViewWidth и высотой 0,8 * redViewheight. Чем я хочу, чтобы размер текста был в 2 строках и как можно больше поместился в рамки кнопок. Я использую собственный шрифт и не авто-макет. К моему удивлению, этого не происходит. Текст находится в 2 строках, но размер шрифта текста слишком велик и окончательно не соответствует размеру кнопки. Где я неправ?

Редактировать: redView использует автозапуск. Заполнение redView с помощью кнопок не используется.

let font = UIFont(name: "customfont", size: 19) 
    button1 = UIButton() 
    button2 = UIButton() 

    button1.frame = CGRectMake(navigationBarView.frame.width*0.6, navigationBarView.frame.height*0.1, navigationBarView.frame.width*0.4, navigationBarView.frame.height*0.8) 
    button2.frame = CGRectMake(navigationBarView.frame.width*0.2, navigationBarView.frame.height*0.1, navigationBarView.frame.width*0.4, navigationBarView.frame.height*0.8) 


    button1.setTitle("button2\ntext text text text", forState: UIControlState.Normal) 
    button1.titleLabel?.textAlignment = NSTextAlignment.Center 
    button1.titleLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    button1.titleLabel?.font=font 
    button1.titleLabel?.adjustsFontSizeToFitWidth=true 
    button1.titleLabel?.minimumScaleFactor = 0.1 
    button2.setTitle("button1\ntext text text text", forState: UIControlState.Normal) 
    button2.titleLabel?.textAlignment = NSTextAlignment.Center 
    button2.titleLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    button2.titleLabel?.font=font 
    button2.titleLabel?.adjustsFontSizeToFitWidth=true 
    button2.titleLabel?.minimumScaleFactor = 0.1 

ответ

0

Вам необходимо указать количество строк для UILabel следующим образом:

button1.titleLabel?.numberOfLines = 2 
button2.titleLabel?.numberOfLines = 2 

EDIT: Взятые из Dynamically changing font size of UILabel Видимо авто калибровки размер шрифту лейбла работает только тогда, когда у вас есть одна строка , В приведенном ниже коде будет автоматически задаваться размер UILabel и должен быть достаточно простым для редактирования для UIButton (однако это в Objective-C ...).

Начиная с iOS7, размерWithFont становится устаревшим. Многострочный корпус сводится к:

factLabel.numberOfLines = 0; 
factLabel.lineBreakMode = NSLineBreakByWordWrapping; 
CGSize maximumLabelSize = CGSizeMake(factLabel.frame.size.width, CGFLOAT_MAX); 
CGSize expectSize = [factLabel sizeThatFits:maximumLabelSize]; 
factLabel.frame = CGRectMake(factLabel.frame.origin.x, factLabel.frame.origin.y, expectSize.width, expectSize.height); 
+0

Фактически, название метки находится в 2-х строках уже с этим aproach. проблема заключается в том, что размер шрифта не настраивается в соответствии с рамкой кнопок. – brumbrum

+0

Посмотрите на редактирование, другой подход состоял бы в том, чтобы перебирать размеры шрифта и проверять свойство lineHeight для каждого, что кажется немного взломанным. –

+0

спасибо, что остановились. Простите меня, если я неправильно понял код. Я думаю, что это изменяет рамку кнопок, чтобы соответствовать любому тексту, который есть в его названии. В моем случае рамка фиксирована - всегда 0.4 * redViewWidth. Это размер шрифта, который необходимо изменить, чтобы учитывать различные экраны устройств iOS. – brumbrum

0

В итоге я получил что-то вроде этого. Он проверяет ширину экрана и соответственно задает размер шрифта. Hardcoded, но это делает трюк.

let screenRect = UIScreen.mainScreen().bounds 
     let screenWidth = screenRect.size.width; 

var fontSize = 15 
     if screenWidth>410{ 
      fontSize = 19 
     }else if screenWidth>370{ 
      fontSize = 17 
     }else{ 
      fontSize = 15 

     } 
     let font = UIFont(name: "customfont", size: CGFloat(fontSize)) 
Смежные вопросы