0

단추를 건 드리면 dataBuffer를 사용하여 UIImage에 선을 그리려고하는데 drawRect : .. methode가 호출되지 않습니다. (그래서, 내가 그려야 할 선은 나타나지 않습니다.)UIImage에 대한 setNeedsDisplay가 작동하지 않습니다.

정말 어디에 문제가 있는지 모릅니다. 그래서 꽤 많은 코드를 게시했습니다. 미안합니다.

그건 그렇고, 나는 viewbasedapplication에 노력하고 있습니다.

-(void) viewDidLoad{ 
    UIImage *image = [UIImage imageNamed:@"playView2.jpg"]; 
    [playView setImage:image]; 
    [image retain]; 
    offScreenBuffer = [self setupBuffer]; 
} 

- (IBAction)buttonTouched:(id)sender { 
    [self drawToBuffer]; 
    [playView setNeedsDisplay];  
} 

- (void)drawRect:(CGRect)rect{ 
    CGImageRef cgImage = CGBitmapContextCreateImage(offScreenBuffer); 
    UIImage *uiImage = [[UIImage alloc] initWithCGImage:cgImage]; 
    CGImageRelease(cgImage); 
    [uiImage drawInRect: playView.bounds]; 
    [uiImage release]; 
} 



-(void)drawToBuffer { 

//     Red Gr Blu Alpha 
CGFloat color[4] = {1.0, 1.0, 0.0, 1.0}; 

CGContextSetRGBStrokeColor(offScreenBuffer, color[0], color[1], color[2], color[3]); 

CGContextBeginPath(offScreenBuffer); 
CGContextSetLineWidth(offScreenBuffer, 10.0); 
CGContextSetLineCap(offScreenBuffer, kCGLineCapRound); 

CGContextMoveToPoint(offScreenBuffer, 30,40); 
CGContextAddLineToPoint(offScreenBuffer, 150,150); 

CGContextDrawPath(offScreenBuffer, kCGPathStroke); 
} 

-(CGContextRef)setupBuffer{  
    CGSize size = playView.bounds.size; 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

    CGContextRef context = CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width*4, colorSpace, kCGImageAlphaPremultipliedLast); 

    CGColorSpaceRelease(colorSpace); 
    return context; 
} 

답변

1

이 코드는 다음과 같습니다 여기

내 코드? viewDidLoad은 뷰 컨트롤러 메소드이며, drawRect은 뷰 메소드입니다. 어떤 playView (아마도 UIImageView?)는 내부에 drawRect이있는 사용자 정의 UIView 하위 클래스 여야하며 뷰 컨트롤러에서 다양한 항목을 전달해야합니다.

+0

아, 죄송하지만이 점을 잊어 버렸습니다. 하지만 모든 코드는 viewcontroller.m에 있고 playView는 UIImageView입니다. ;-) hmmm ok, UIImageView를 UIView 하위 클래스로 변경하는 것 외에 다른 방법은 없습니다. UIImageView를 기반으로 가능한 코드가 많기 때문에 가능하면 변경하지 않으려 고합니다. : D – Kito

+0

글쎄 버퍼링으로 달성하고자하는 개성이 확실하지 않지만 버퍼 된 이미지를 이미지보기로 전달하거나 이미지보기의 하위보기 인 줄을 별도로 볼 수도 있고 하위 클래스 uiimageview, 좋은 생각인지 모르겠지만. – jrturton

+0

실제로 실제로, 나는 이것을하고 싶다 : (나의 더 오래된 포스트 중 하나) http://stackoverflow.com/questions/7547807/how-to-set-rgba-color-of-a-pixel-of-an -uiimage 그러나 나는 그것을하는 법을 정말로 모른다 : P 당신은 이것에 대해 좋은 생각을 가지고 있지 않습니까 ??? : D – Kito

1

나는이 오래된 질문하지만 여전히 누군가가 여기에 걸쳐 올 수도 알고

를 동일한 (또는 매우 비슷한) 질문에 제대로 답이 여기있다 :

drawRect not being called in my subclass of UIImageView

UIImageView 클래스 (및 선글라스입니다) setNeedsDisplay으로 전화하면 drawRect으로 전화하지 마십시오.