iOS. Приемы программирования. Вандад Нахавандипур
Чтение книги онлайн.

Читать онлайн книгу iOS. Приемы программирования - Вандад Нахавандипур страница 45

СКАЧАТЬ style="font-size:15px;">      Постановка задачи

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

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

      Решение

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

      – (void)viewDidLoad{

      [super viewDidLoad];

      CGRect labelFrame = CGRectMake(0.0f,

СКАЧАТЬ