Ответ 1
Вы можете вызвать следующее, чтобы напечатать следующее значение:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
Я пытался записать (распечатать) значение объекта CGSize следующим образом:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
Что-то не так в этом коде; мое приложение рушится, а управление переходит к инструкции NSLog.
Спасибо Прасад
Вы можете вызвать следующее, чтобы напечатать следующее значение:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
Попробуйте это
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
Сбой происходит из-за того, что sizeOfTab
не находится в формате NSString
.
% @означает, что вы пытаетесь вставить строку. 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
Как 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}
CGSize
имеет ширину и высоту memebers, которые имеют тип CGFloat
. Вы можете распечатать их, используя следующие
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
Здесь self.view - это вид класса UIView. Вы можете распечатать любой фрейм с этим журналом.
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));