Próbowałem zarejestrować (wydrukować) wartość obiektu CGSize w następujący sposób:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
Czy jest coś nie tak w tym kodzie; moja aplikacja ulega awarii, gdy sterowanie dochodzi do instrukcji NSLog.
Dzięki, Prasad
iphone
objective-c
ios4
Prasad
źródło
źródło
Odpowiedzi:
Możesz wywołać następujące czynności, aby wydrukować wartość, której szukasz:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
źródło
Spróbuj tego
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49); NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
Awaria występuje, ponieważ
sizeOfTab
nie jest wNSString
formacie.źródło
sizeOfTab
nie jest obiektem (działałby dowolny obiekt, nie tylko aNSString
).CGSize
jest strukturą.self.frame.size.width/tabCount
Jak wspomniał JoeBlow ( zauważyłem po wpisaniu i sformatowaniu tej odpowiedzi ), istnieje również funkcja UIKit
NSStringFromCGSize()
, do ładnego drukowania i jej odwrotnośćCGSizeFromString()
, do tworzeniaCGSize
struktury zNSString
obiektu.Apple dokumentuje następujący
string
parametr :CGSizeFromString(
string
)
Przykład
CGSize size = CGSizeFromString(@"{320,568}"); NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Wynik
Pretty printed size: {320, 568}
Inne przydatne funkcje ( odniesienie do geometrii CG )
źródło
% @ oznacza, że próbujesz wstawić ciąg. CGSize nie jest ciągiem znaków i nie można go automagicznie przekonwertować na jeden. Dlatego Twoja aplikacja się zawiesza. Zamiast tego musisz osobno rejestrować poszczególne właściwości, takie jak
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
% f jest używane, ponieważ właściwości width i height są typu float .
Informacje na temat innych konwersji formatów można znaleźć w dokumentacji: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
źródło
CGSize
ma szerokość i wysokość elementów, które są typuCGFloat
. Możesz je wydrukować w następujący sposóbNSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
źródło
Tutaj self.view jest widokiem klasy UIView. Za pomocą tego dziennika możesz wydrukować dowolną ramkę.
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
źródło