Как печатать или регистрировать значение объекта CGSize?

Я пытался записать (распечатать) значение объекта CGSize следующим образом:

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);

NSLog(@"size of tab is %@",sizeOfTab);

Что-то не так в этом коде; мое приложение рушится, а управление переходит к инструкции NSLog.

Спасибо Прасад

Ответ 1

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

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);

Ответ 2

Попробуйте это

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));

Сбой происходит из-за того, что sizeOfTab не находится в формате NSString.

Ответ 3

% @означает, что вы пытаетесь вставить строку. CGSize не является строкой и не может автоматически преобразовываться в один. Вот почему ваше приложение выходит из строя. Вместо этого вам нужно регистрировать отдельные свойства отдельно, например

NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);

% f используется, потому что свойства width и height имеют тип float.

Для других преобразований формата см. документы: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

Ответ 4

Как JoeBlow упомянул (я заметил после ввода и форматирования этого ответа), там также функция UIKit, NSStringFromCGSize(), для красивой печати и ее обратного CGSizeFromString() для создания структуры CGSize от объекта NSString.

Apple документирует параметр string CGSizeFromString( string ) следующим образом:

Строка, содержимое которой имеет вид "{w, h}", где w is ширина и h - высота. Значения w и h могут быть целыми или float. Примером допустимой строки является @ "{3.0,2.5}". Струна не локализуется, поэтому элементы всегда разделяются запятой.


Пример

CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));

Выход

Pretty printed size: {320, 568}

Другие полезные функции (Справочник по CGGeometry)

  • CGRectGetHeight()
  • CGRectGetWidth()

Ответ 5

CGSize имеет ширину и высоту memebers, которые имеют тип CGFloat. Вы можете распечатать их, используя следующие

NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);

Ответ 6

Здесь self.view - это вид класса UIView. Вы можете распечатать любой фрейм с этим журналом.

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));