Как распечатать или записать значение объекта CGSize? - PullRequest
85 голосов
/ 08 июля 2011

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

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

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

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

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

Ответы [ 6 ]

209 голосов
/ 08 июля 2011

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

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

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

54 голосов
/ 08 июля 2011

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

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
10 голосов
/ 29 марта 2014

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

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

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


Пример

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

Выход

Pretty printed size: {320, 568}

Другие полезные функции ( CGGeometry Reference )

  • CGRectGetHeight ()
  • CGRectGetWidth ()
6 голосов
/ 08 июля 2011

% @ означает, что вы пытаетесь вставить строку.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

3 голосов
/ 03 июля 2017

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

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
3 голосов
/ 08 июля 2011

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

NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...