>– (void)viewDidLoad{
>[super viewDidLoad];
>CGRect labelFrame = CGRectMake(0.0f,
>0.0f,
>100.0f,
>23.0f);
>self.myLabel = [[UILabel alloc] initWithFrame: labelFrame];
>self.myLabel.text = @"iOS 7 Programming Cookbook";
>self.myLabel.font = [UIFont boldSystemFontOfSize:14.0f];
>self.myLabel.center = self.view.center;
>[self.view addSubview: self.myLabel];
>}
Теперь запустим приложение и посмотрим, что происходит (рис. 1.46).
Рис. 1.46. Слишком длинная подпись, которая не умещается на экране
Как видите, текст (содержимое) подписи обрезается, а за ним идут точки, поскольку ширины поля для подписи недостаточно для того, чтобы уместился весь текст. Для решения этой проблемы можно было бы увеличить ширину, но что делать с высотой? А что, если мы хотим, чтобы текст переходил на следующую строку. Хорошо, увеличим высоту с 23.0f до 50.0f:
>CGRect labelFrame = CGRectMake(0.0f,
>0.0f,
>100.0f,
>50.0f);
Если сейчас запустить приложение, получится тот же самый результат, что и на рис. 1.46. Вы могли бы спросить: «Я увеличил высоту, так почему же текст не переходит на следующую строку»? Оказывается, у класса UILabel есть свойство numberOfLines, в котором нужно указать, на сколько строк должен разбиваться текст подписи, если в ширину для нее будет недостаточно места. Если задать здесь значение 3, то вы сообщите программе, что текст подписи должен занимать не более трех строк, если этот текст не умещается в одной строке:
>– (void)viewDidLoad{
>[super viewDidLoad];
>CGRect labelFrame = CGRectMake(0.0f,
>0.0f,
>100.0f,
>70.0f);
>self.myLabel = [[UILabel alloc] initWithFrame: labelFrame];
>self.myLabel.numberOfLines = 3;
>self.myLabel.lineBreakMode = NSLineBreakByWordWrapping;
>self.myLabel.text = @"iOS 7 Programming Cookbook";
>self.myLabel.font = [UIFont boldSystemFontOfSize:14.0f];
>self.myLabel.center = self.view.center;
>[self.view addSubview: self.myLabel];
>}
Теперь при запуске программы вы получите желаемый результат (рис. 1.47).
Рис. 1.47. Подпись, текст которой занимает три строки
Бывает, что вы не знаете, сколько строк понадобится, чтобы отобразить текст подписи. В таких случаях для свойства numberOfLines подписи задается значение 0.
Если вы хотите, чтобы рамка, в которой находится подпись, имела постоянные размеры, а размер шрифта корректировался так, чтобы он входил в отведенные границы, необходимо задать для свойства adjustsFontSizeToFitWidth подписи значение YES. Например, если высота подписи равна 23.0f, как показано на рис. 1.46, то можно уместить шрифт подписи в этих границах. Вот как это делается:
>– (void)viewDidLoad{
>[super viewDidLoad];
>self.view.backgroundColor = [UIColor whiteColor];
>CGRect labelFrame = CGRectMake(0.0f,
>0.0f,
>100.0f,
>23.0f);
>self.myLabel = [[UILabel alloc] initWithFrame: labelFrame];
>self.myLabel.adjustsFontSizeToFitWidth = YES;
>self.myLabel.text = @"iOS 7 Programming Cookbook";
>self.myLabel.font = [UIFont boldSystemFontOfSize:14.0f];
>self.myLabel.center = self.view.center;
>[self.view addSubview: self.myLabel];
>}
1.18. Оформление UILabel
Постановка задачи
Требуется возможность оформлять внешний вид подписей – от настройки теней до настройки выравнивания.
Решение
Пользуйтесь перечисленными далее свойствами класса UILabel в зависимости от стоящей перед вами задачи.
• shadowColor – свойство типа UIColor. Как понятно из названия, оно указывает цвет отбрасываемой тени для подписи. Устанавливая это свойство, вы должны установить и свойство shadowOffset.
• shadowOffset – это свойство типа CGSize. Оно указывает размер отступа между тенью и текстом. Например, если вы зададите для этого свойства значение (1, 0), то тень будет находиться на одну точку правее текста. Если задать значение (1, 2), то тень окажется на одну правее и на одну точку ниже текста. Если же установить значение (-2, -10), то тень будет отображаться на две точки левее и на десять точек выше текста.