Размер шрифта
-
+

iOS. Приемы программирования - стр. 52

>bundle: nibBundleOrNil];

>if (self!= nil) {

>self.title = @"First";

>self.tabBarItem.image = [UIImage imageNamed:@"FirstTab"];

>}

>return self;


>}

>– (void)viewDidLoad{

>[super viewDidLoad];

>self.view.backgroundColor = [UIColor whiteColor];

>}

>А вот код для второго контроллера:

>– (id)initWithNibName:(NSString *)nibNameOrNil

>bundle:(NSBundle *)nibBundleOrNil{


>self = [super initWithNibName: nibNameOrNil

>bundle: nibBundleOrNil];

>if (self!= nil) {

>self.title = @"Second";

>self.tabBarItem.image = [UIImage imageNamed:@"SecondTab"];

>}

>return self;


>}


>– (void)viewDidLoad{

>[super viewDidLoad];

>self.view.backgroundColor = [UIColor whiteColor];

>}


Запустив приложение в эмуляторе, увидим такую картинку, как на рис. 1.44.


Рис. 1.44. Элементы панели вкладок с изображениями

1.17. Отображение статического текста с помощью UILabel

Постановка задачи

Необходимо отображать для пользователя текст. Кроме того, вы хотели бы управлять шрифтом и цветом этого текста.

Статическим называется такой текст, который пользователь не может напрямую изменять во время исполнения.

Решение

Используйте класс UILabel.

Обсуждение

Подписи (Labels) встречаются в iOS повсюду. Они используются практически в любых приложениях, за исключением игр, для отображения содержимого которых обычно применяется OpenGL ES, а не основные фреймворки отрисовки, входящие в состав iOS. На рис. 1.45 показаны несколько подписей, имеющихся в приложении Settings (Настройки) для iPhone.


Рис. 1.45. Подписи в качестве названий настроек


Как видите, подписи содержат текстовые названия разделов приложения Settings (Настройки), в частности iCloud, Twitter, FaceTime, Safari и т. д.

Чтобы создать подпись, необходимо инстанцировать объект типа UILabel. Установка или получение текста для подписи осуществляется с помощью свойства text. Итак, определим подпись в файле реализации контроллера нашего вида:


>#import "ViewController.h"


>@interface ViewController ()

>@property (nonatomic, strong) UILabel *myLabel;

>@end


>@implementation ViewController

>…


А теперь в viewDidLoad инстанцируем подпись и сообщаем среде времени исполнения, где следует разместить подпись (эта информация указывается в свойстве frame) и в какой вид она должна быть добавлена. В данном случае подпись окажется в виде контроллера нашего вида:


>– (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, то вы сообщите программе, что текст подписи должен занимать не более трех строк, если этот текст не умещается в одной строке:

Страница 52