[iphone] CGSize 객체의 값을 인쇄하거나 기록하는 방법은 무엇입니까?
다음과 같이 CGSize 개체의 값을 기록 (인쇄)하려고했습니다.
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
이 코드에 문제가 있습니까? 제어가 NSLog 문에 오는 동안 내 앱이 충돌합니다.
감사합니다 Prasad
답변
다음을 호출하여 원하는 값을 인쇄 할 수 있습니다.
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
합니다.
답변
으로 JoeBlow 언급 ( 내가 입력 한 후 발견이 대답을 서식 ),이 또한 UIKit 기능입니다 NSStringFromCGSize()
꽤 인쇄, 그 역, CGSizeFromString()
하는 생성 CGSize
에서 구조체를NSString
객체입니다.
Apple은 string
매개 변수 를 다음과 같이 문서화합니다 .CGSizeFromString(
string
)
내용이 “{ w , h }” 형식 인 문자열 . 여기서 w 는 너비이고 h 는 높이입니다. w 및 시간 값은 정수 또는 부동 소수점 값이 될 수있다. 유효한 문자열의 예는 @ “{3.0,2.5}”입니다. 문자열이 현지화되지 않았으므로 항목은 항상 쉼표로 구분됩니다.
예
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
산출
Pretty printed size: {320, 568}
기타 유용한 기능 ( CGGeometry 참조 )
- CGRectGetHeight ()
- CGRectGetWidth ()
답변
% @는 문자열을 삽입하려고 함을 의미합니다. CGSize는 문자열이 아니며 자동으로 하나로 변환 될 수 없습니다. 이것이 앱이 충돌하는 이유입니다. 대신 다음과 같이 개별 속성을 개별적으로 기록해야합니다.
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
width 및 height 속성이 float 유형 이기 때문에 % f가 사용됩니다 .
다른 형식 변환은 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html 문서를 참조하십시오.
답변
CGSize
유형의 구성원 너비와 높이가 있습니다 CGFloat
. 다음을 사용하여 인쇄 할 수 있습니다.
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
답변
여기 self.view는 UIView 클래스의 뷰입니다. 이 로그로 모든 프레임을 인쇄 할 수 있습니다.
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));