2012-03-26 2 views
1

Я нашел странное поведение при работе с UIButton с большим размером шрифта:усеченный курсив в UIButton?

Моих IPad приложение должен представить эти виды UIButton и я обнаружил, что, когда я применяю курсивную собственность на тот крупном шрифте размера с UIButton, текст выглядит усеченным как показано ниже: screenshot

Это странно, так как мой UIButton правильно центрирован и достаточно большой. размерToFit не помогает. Я пытался поставить журнал, чтобы узнать больше, и это, кажется, что внутри размер UILabel кнопки слишком крошечный:

NSLog(@"Button width : %.1f, text width : %.1f", button.frame.size.width, button.titleLabel.frame.size.width); 
[button.titleLabel sizeToFit]; 
NSLog(@"Button width : %.1f, text width : %.1f", button.frame.size.width, button.titleLabel.frame.size.width); 

, который дает мне:

ширина Кнопки: 710,3, текст ширина: 518,0

ширина кнопки: 710,3, текст ширина: 518,0

он делает то же самое думает, что непосредственно в IB, при применении более размер шрифта размером 150 пикселей на курсивом UIButton в стиле курсивом. Есть ли способ исправить это или это ошибка SDK?

+0

Почему бы не просто увеличить размер текстовой метки или добавить пользовательскую метку в качестве подзаголовка кнопки? –

+0

не работает. единственное, что я нашел для работы, - добавить пустое место в конце, но это странно, что нужно сделать это – Diwann

+0

См. мой ответ здесь: http://stackoverflow.com/questions/6624447/uibutton-italic-font-clipping/21419202 # 21419202 –

ответ

0

Я думаю, что это комбинация большого размера шрифта (относительно размера кнопки/метки). Когда вы добавляете пробел, его фактическое увеличение размера UILabel.

Пробег: [button.titleLabel adjustsFontSizeToFitWidth]. Это, безусловно, уменьшит размер шрифта (если он слишком велик для данного размера кадра), но убедитесь, что ничто из персонажа не отрубается.

+0

странно, adjustsFontSizeToFitWidth ничего не делает ... – Diwann

1

Вы можете попробовать настройки название кнопки, как в следующем

[button setTitle:@"2 " forState:UIControlStateNormal/Highlighted/Selected]; 

или сделать то же самое, используя файл .xib, связанный с ViewController. После этого, вы должны установить край Вставки названия кнопки, которые могут быть сделаны из соответствующего .xib файла, или выполните следующие действия:

[button setTitleEdgeInsets:UIEdgeInsetsMake(0,spacingFromLeft, 0, 0)]; 

Второй шаг будет гарантировать, что текст, в этом случае строка «2» остается выровненной по направлению к центру. Таким образом, в параметре leftSpacing метода UIEdgeInsetsMake() вы можете установить ширину в соответствии с вашими требованиями, чтобы выровнять ее по центру.

У меня также была такая же проблема, и я принял это решение, которое может быть не лучшим или правильным, но это, безусловно, сработало для меня.

+0

Простым подходом может быть 'setTitle: @" 2 "' :) –

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