2010-07-17 4 views
0

안녕하세요. 저는 약간의 도움이 필요합니다. 내 애플 리케이션에서 UITableView 이미지를 나타내는 사용자 지정 셀 채워져있다. (즉, 행을 선택하면 이미지보기의 그림이 표시됩니다).iPhone에서 Interface Builder 연결선과 같은 효과

사용자 삽입 이미지 셀에 일련의 이미지 뷰 중 하나로 드래그 할 수있는 아이콘이 있습니다. 방법과 마찬가지로 연결을 설정하기 위해 IB에서 행을 드래그 할 수 있습니다. 사용자가 손가락을 뗀 후에는 화면의 어느 부분을 놓았는지 확인하고 그림 프레임을 나타내는 이러한 사각형 중 하나 인 경우 그림 프레임에 이미지가 채워지며 줄이 사라집니다.

내 앱에서 선을 그려 본 적이 없기 때문에 내가하는 방법을 알고 있기 때문에 (튜토리얼이나 클래스 정의에 대한 링크를 찾고 있습니다.) 둘째, 시작 지점부터 어떤 문제가 있을까요? 라인은 UITableViewCell에 있고 끝점은 기본보기에 있습니까?

답변

0

실제로 전에 이런 짓을했는지, 그래서 당신에게 정확한 코드를 제공 할 수 있습니다 : D

를이 단지 그림 부분, 당신은 self.userInteractionEnabled를 제거 달리, 별도의 클래스의 터치 이벤트를 (구현입니다 = NO,하는 .m 파일에 BOOL 드래그

라인이 그려 져야 경우 LineView을 알려줍니다

#import <UIKit/UIKit.h> 

@interface LineView : UIView 
{ 
    CGPoint start; 
    CGPoint end; 

    BOOL dragged; 
} 

@property CGPoint start, end; 
@property BOOL dragged; 

@end 
LineView.h합니다.

LineView.m

#import "LineView.h" 

@implementation LineView 

@synthesize start, end, dragged; 

- (id)initWithFrame:(CGRect)frame 
{ 
    if (self = [super initWithFrame: frame]) 
    { 
     self.userInteractionEnabled = NO; 
     self.backgroundColor = [UIColor clearColor]; 
    } 
    return self; 
} 

#pragma mark Setters 
-(void) setStart: (CGPoint) s 
{ 
    start = s; 
    [self setNeedsDisplay]; 
} 

-(void) setEnd: (CGPoint) e 
{ 
    end = e; 
    [self setNeedsDisplay]; 
} 

#define LINE_COLOR [UIColor redColor] 
#define CIRCLE_COLOR [UIColor redColor] 

#define LINE_WIDTH 5 
#define CIRCLE_RADIUS 10 

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef c = UIGraphicsGetCurrentContext(); 

    if(dragged) { 
     [LINE_COLOR setStroke]; 
     CGContextMoveToPoint(c, start.x, start.y); 
     CGContextAddLineToPoint(c, end.x, end.y);   
     CGContextSetLineWidth(c, LINE_WIDTH); 
     CGContextClosePath(c); 
     CGContextStrokePath(c); 

     [CIRCLE_COLOR setFill]; 
     CGContextAddArc(c, start.x, start.y, CIRCLE_RADIUS, 0, M_PI*2, YES); 
     CGContextClosePath(c); 
     CGContextFillPath(c); 

     CGContextAddArc(c, end.x, end.y, CIRCLE_RADIUS, 0, M_PI*2, YES); 
     CGContextClosePath(c); 
     CGContextFillPath(c); 
    } 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

@end 
+0

그리고 난 당신이 뷰가 다른 뷰 이상이어야한다는 것을 알고 있기를 바랍니다. 줄을 드래그 한 위치를 감지하려면 터치 이벤트를 처리하는 클래스에서 touchesEnded :를 사용하십시오. – tadejsv

+0

wow thats great, 나는 시도해보고 알려 드리겠습니다. – Brodie

+0

괜찮습니다. 내가 필요로하는 것보다 훨씬 적게 알고있다. 사용자가 tableViewCell의 단추에서 손가락을 끈 상태에서 구현합니까? – Brodie

관련 문제