2010-06-09 8 views
1

이미지, 텍스트 상자 등 ... 내부에 UIViewController가 포함 된 UIViewController가있는 iPhone에 내 앱이 있습니다. UIViewController 내부에서 직접 OpenGL을 사용하여 선을 그릴 수 있습니다. ?UIViewController를 통해 선 그리기

미리 감사드립니다.

+0

왜 선을 그 으려면 그냥 OpenGL이 필요합니까? UIView를 사용하지 않는 이유는 무엇입니까? –

+0

어떻게 이미지를 통해 UIViewController에 선을 그릴 수 있습니까? – ghiboz

답변

6

OpenGL에 대해 확실합니까?

일반 뷰보다 OpenGL을 사용할 수 없다고 생각합니다.

다른 뷰보다 위에있는 사용자 정의 뷰 (UIView에서 상속)를 추가하고 원하는 뷰를 그릴 수 있습니다.
이보기의 배경색은 투명해야합니다.
또한 다른보기 (탭 단추, 텍스트보기 편집, 스크롤 등)와 상호 작용하려면 사용자 정의보기에 hitTest 메소드를 구현하여 터치 이벤트를 해당보기로 전달해야합니다. 이 하나 아래에 위치하고 있습니다 ...

편집 : hitTest를 망치지 마십시오. 그냥 ...

편집을 XIB에 사용 가능 사용자 상호 작용의 선택을 취소 : 코드 샘플 :

@interface TransparentDrawingView : UIView { 
    CGPoint fromPoint; 
    CGPoint toPoint; 
} 
- (void)drawLineFrom:(CGPoint)from to:(CGPoint)to; 
@end 

@implementation TransparentDrawingView 

- (void)initObject { 
    // Initialization code 
    [super setBackgroundColor:[UIColor clearColor]]; 
} 
- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
     [self initObject]; 
    } 
    return self; 
} 
- (id)initWithCoder:(NSCoder *)aCoder { 
    if (self = [super initWithCoder:aCoder]) { 
     // Initialization code 
     [self initObject]; 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    // Drawing code 

    // Draw a line from 'fromPoint' to 'toPoint' 
} 
- (void)drawLineFrom:(CGPoint)from to:(CGPoint)to { 
    fromPoint = from; 
    toPoint = to; 

    // Refresh 
    [self setNeedsDisplay]; 
} 

@end 
+0

Thanks Michael ... 내 목표는 이미지 위에 선을 그리는 것입니다. 감사합니다. – ghiboz

+1

답안에 추가 한 코드 샘플을 참조하십시오. 이보기를 사용자 정의보기로 사용하면 나머지보기 위에 전체 창으로 확산됩니다. DrawRect : 메소드에서 드로잉 코드를 채우십시오 ... –

1

우선 당신의 UIView와의 UIViewController의 책임을 알아야한다고 생각합니다. UIView는 주로 그리기 (touchBegin, ToucheMove 오버라이드), 애니메이션 처리, 하위 뷰 관리 및 이벤트 처리를 담당합니다. UIViewController는 주로로드, 언로드 뷰 등을 담당합니다.

그래서 뷰 ​​컨트롤러가 아닌 사용자 정의 된 뷰 (UIView)에서이 선을 그려야합니다.

두 번째 : 간단한 모양이나 선만 표시하면됩니다. UI 컨트롤과 이미지를 사용하는 것이 좋습니다. 'drawRect'조차도 더 많은 리소스를 사용하게되므로 권장하지 않습니다. 확실히 OpenGL은 많은 자원을 필요로합니다.

+0

elliot에 감사드립니다. 어떻게 UI 컨트롤을 사용하여 라인을 표시 할 수 있습니까 ??? – ghiboz

+1

뷰를 드래그하여 100 픽셀 너비, 1 픽셀 높이 사각형과 같은 모양으로 배경색을 검정색으로 설정할 수 있습니다. 그것은 선처럼 보일 것입니다. :) 그리고 나서이 '라인'을 이미지 뷰의 하위 뷰로 지정할 수 있습니다. –

+0

괜찮 으면,하지만 라인을 곡선해야합니까 ?? – ghiboz

1

대답은 간단합니다. UIView를 확장하는 새로운 클래스를 만들고 drawRect 함수를 재정의해야 Quartz ...를 그리게됩니다. 그래디언트 배경을 원할 경우이 방법을 사용하십시오.

또한 Adobe Flex 4로 개발 중이며 iPhone 4 SDK에는 스킨 및 레이아웃 "패턴"(예 : UIView에 별도의 파일 ..이있을 수 있음) 및 레이아웃 (가로, 세로, 타일 ....)), 나를 위해 그것은 끔찍한 부족입니다!

오픈 소스 라이브러리 Three20이 iPhone SDK에 가져 오는 기능입니다.