CGSize 객체의 값을 인쇄하거나 기록하는 방법은 무엇입니까?


88

다음과 같이 CGSize 개체의 값을 기록 (인쇄)하려고했습니다.

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

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

이 코드에 문제가 있습니까? 제어가 NSLog 문에 오는 동안 내 앱이 충돌합니다.

감사합니다 Prasad


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 2011

1
@ 7KV7 sizeOfTab은 객체 가 아니기 때문에 충돌이 발생 합니다 (a뿐만 아니라 모든 객체가 작동 함 NSString). CGSize구조체입니다.
albertamg 2011

잘 작동하지만 {nan, 49}를 표시합니다. nan은 무엇입니까?
Prasad 2011

@Prasad : nan 나는 숫자가 아님을 의미한다고 생각합니다. tabCount 란 무엇입니까? 로그인을 시도self.frame.size.width/tabCount
visakh7

11

으로 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 ()

6

% @는 문자열을 삽입하려고 함을 의미합니다. 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 문서를 참조하십시오.


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));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.