2009-11-17 6 views
3

컨텍스트 (CGContextRef)를 UIImageView에서 얻을 수 있습니까?UIImageView에서 컨텍스트 가져 오기

세부 정보 : xib 파일에 대한 컨트롤러 링크가 있습니다. UIImageView 컨텍스트 (CGContextRef)를 얻을 방법 viewDidLoad에 지금

IBOutlet UIImageView *imageView; 

을 : IB에서 나는 UIImageView을 추가하고이에 대한 참조 있나요? 이 전

, 내가 사용하는 경우 :

CGContextRef context = UIGraphicsGetCurrentContext(); 

출력 :

<Error>: CGContextTranslateCTM: invalid context 

제안?

+0

문맥을 가지고 무엇을하고 싶니? 컨텍스트는 직접 만들거나 drawRect : call의 (미안) 컨텍스트 내에서만 유효합니다. –

답변

3

사용자 고유의 그리기 방법을 사용하려면 UIView의 drawRect : 메소드에 적용해야합니다. 사용자 고유의 그리기 논리를 만들려면 UIView를 서브 클래스 화해야합니다. XCode에서 File-> New File을 사용하고 UIView를 템플릿으로 선택하여 기본 프레임 워크를 제공합니다. Interface-Builder에서는 먼저 새로운 뷰를 추가 한 다음 Inspector 창에서 Identity 탭 아래에 클래스를 사용하도록 설정할 수 있습니다.

방법은 당신에게 상황에 대한 참조를 제공하기 위해이 같은 시작해야합니다 : 뷰가 처음 표시 될 때

- (void)drawRect:(CGRect)fr { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    ... DRAWING CODE ... 
} 

이 메소드가 자동으로 호출됩니다. 논리가 일부 변수에 의존하는 경우 UIView에서 setNeedsDisplay을 호출하여 뷰가 드로잉 논리를 다시 실행하게해야합니다.

그러나,이 UIImageView에 (LINK)를 작동하지 않습니다 다음있는 UIImageView 클래스가 그 이미지를 그릴 수 있도록 최적화되어

서브 클래스 노트

특별 고려 사항

디스플레이. UIImageView는 drawRect : 하위 클래스를 호출하지 않습니다. 하위 클래스에 사용자 지정 그리기 코드가 필요한 경우 UIView를 기본 클래스로 사용하는 것이 좋습니다.

2

UIGraphicsBeginImageContext (self.frame.size)에 대한 호출을 추가하십시오. before UIGraphicsGetCurrentContext(); 작동합니다.

UIGraphicsBeginImageContext(self.frame.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
+0

대단히 감사합니다 !!!! –

관련 문제