2012-12-28 55 views
2

我正在製作移動觸摸項目我想在觸摸位置更改圖像的alpha或可見性(無論可能)。讓我們說Unhidethat特定點的圖片..如何更改UIImageView alpha onTouchMoved

PS我已經知道如何擦除圖像。我正在尋找unerase

+0

你有沒有解決這個問題? – Spynet

+0

是的,我得到它我正打算解決它改變阿爾法或unerase方式但你救了我...... 我不認爲所以我得到任何有關的,直到一天,我可以幫助,所以我會這樣做在prev的方式你告訴我 –

+0

享受繼續發佈查詢 – Spynet

回答

0

我相信阿爾法是整個視圖的屬性,所以你所能做的就是繪製該特定點...請參閱這可能是this是你想要實現的。

+0

感謝Ankit但我想隱藏隱藏 –

0
- (void)viewDidLoad 
{ 
    //load super view 
    [super viewDidLoad]; 

    //to decrease alpha. 
    UISwipeGestureRecognizer *swiperight=[[UISwipeGestureRecognizer alloc]  
    initWithTarget:self action: @selector(setalpha_decrease:)]; 
    [swiperight setDirection:UISwipeGestureRecognizerDirectionRight]; 
    [self.view addGestureRecognizer:swiperight]; 

    //to increase alpha.  
    UISwipeGestureRecognizer *swipeleft=[[UISwipeGestureRecognizer alloc] 
    initWithTarget:self action: @selector(setalpha_increase:)]; 
    [swipeleft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [self.view addGestureRecognizer:swipeleft]; 



    } 


    -(void) setalpha_decrease:(UIPanGestureRecognizer *) gestureRecognizer { 

    imgview.alpha= imgtomove.alpha-(imgtomove.alpha/10); 
    } 



    -(void) setalpha_increase:(UIPanGestureRecognizer *) gestureRecognizer { 

    imgview.alpha= imgtomove.alpha+(imgtomove.alpha/10); 

    } 
-1
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *t = [[touches allObjects] objectAtIndex:0]; 
    float alpha = [t locationInView:self.view].x/self.view.frame.size.width; 
    _img.alpha = alpha; 
} 
0

你爲什麼不把它填充了一種顏色或紋理,然後使用@AnkitSrivastava回答讓觸摸去擦視圖的背景部分頂部空視圖,揭示隱藏的圖像背後。

1

我不具有對代碼的好形式,因爲他們是從我的博客複製抱歉。 編輯需要我很多。

1隱藏您觸摸的部分。

當你的手指移動,刪除某些部分:

- (UIImage *)erasePartsMoved { 
UIImage *image = nil; 
UIColor *color = [UIColor whiteColor]; 
CGFloat width = 5.0f; 
CGSize imageContextSize = self.imageView.frame.size; 

UIGraphicsBeginImageContext(imageContextSize); 

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetLineWidth(context, width); 
CGContextSetStrokeColorWithColor(context, [color CGColor]); 

CGContextMoveToPoint(context, self.touchStartPoint.x, self.touchStartPoint.y); 
//Do something needed. 
CGContextAddLineToPoint(context, self.touchEndPoint.x, self.touchEndPoint.y); 

CGContextStrokePath(context); 

image = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
return image;} 

2您的圖片是不可見的,在第一,例如,透明。

得到點觸摸,則計算與觸摸點了一圈,終於改變像素中圈阿爾法:

typedef struct _singleRGBA{ 
unsigned char red; 
unsigned char green; 
unsigned char blue; 
unsigned char alpha;} RGBA; 

要改變像素的Alpha:

void filterOpacity(UInt8 *pixelBuf, UInt32 offset, void *context){ 
double val = *((double*)context); 
int a = offset+3; 
int alpha = pixelBuf[a]; 
pixelBuf[a] = SAFECOLOR(alpha * val);} 

我希望以上會幫忙。 有趣的問題,我想稍後做一個可運行的演示。