Як надрукувати або записати значення об'єкта CGSize?


88

Я намагався записати (надрукувати) значення об'єкта CGSize таким чином:

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

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

Чи є щось не так у цьому коді; мій додаток виходить з ладу, поки контроль надходить до оператора NSLog.

Дякую Прасад


2
NSStringFromCGSize (), а також NSStringFromCGRect ()
Fattie

Відповіді:


55

Ви можете зателефонувати наступному, щоб надрукувати значення, за яким ви перебуваєте:

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

217

Спробуйте це

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

Збій відбувається, оскільки sizeOfTabвін не у NSStringформаті.


3
Класно, це щось нове, про що я сьогодні дізнався. +1, але я не буду видаляти свою відповідь :-P.
Praveen S

@Praveen: Дякую .. Радий, що сьогодні я допоможу тобі дізнатися щось нове ... Просто повертаю послугу. Я отримував та отримую таку інформацію через SO.
visakh7

1
@ 7KV7 Збій відбувається, оскільки sizeOfTabне є об’єктом (будь-який об’єкт буде працювати, а не лише a NSString). CGSizeє структурою.
albertamg

thanku працює нормально, але відображається {nan, 49}, що таке nan?
Прасад

@Prasad: nan, на мою думку, розшифровується як Not a Number. що таке tabCount? спробуйте зареєструватиself.frame.size.width/tabCount
visakh7

11

Як згадував 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

% @ означає, що ви намагаєтесь вставити рядок. CGSize не є рядком і не може бути автоматично перетворений в один. Ось чому ваш додаток аварійно завершує роботу. Натомість вам потрібно реєструвати окремі властивості окремо, наприклад

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

% f використовується, оскільки властивості ширини та висоти належать до типу float .

Інші перетворення формату див. У документації: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html


Ласкаво просимо до SO. +1 для детальної відповіді.
Praveen S

Дякую. Я озирнувся навколо, і дивно бачити, як багато людей ніколи не турбуються, переглядаючи документи, перш ніж задавати питання. Я помістив посилання туди, щоб ми не отримували чергового запитання, як надрукувати int .
Грег

3

CGSizeмає ширину та висоту мембран, які є типовими CGFloat. Ви можете роздрукувати їх, використовуючи наступне

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

3

Тут self.view - це погляд класу UIView. Ви можете надрукувати будь-який кадр за допомогою цього журналу.

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.