[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);

widthheight 속성이 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));


답변