我正在製作移動觸摸項目我想在觸摸位置更改圖像的alpha或可見性(無論可能)。讓我們說Unhidethat特定點的圖片..如何更改UIImageView alpha onTouchMoved
PS我已經知道如何擦除圖像。我正在尋找unerase
我正在製作移動觸摸項目我想在觸摸位置更改圖像的alpha或可見性(無論可能)。讓我們說Unhidethat特定點的圖片..如何更改UIImageView alpha onTouchMoved
PS我已經知道如何擦除圖像。我正在尋找unerase
我認爲這個項目確實你在尋找什麼:https://github.com/SebastienThiebaud/STScratchView
你有2個圖像,其中一個是隱藏的圖像,另一個就是你刮開一個。
甚至這個項目:http://www.cocoacontrols.com/platforms/ios/controls/scratch-n-see
- (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);
}
-(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;
}
你爲什麼不把它填充了一種顏色或紋理,然後使用@AnkitSrivastava回答讓觸摸去擦視圖的背景部分頂部空視圖,揭示隱藏的圖像背後。
我不具有對代碼的好形式,因爲他們是從我的博客複製抱歉。 編輯需要我很多。
當你的手指移動,刪除某些部分:
- (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;}
得到點觸摸,則計算與觸摸點了一圈,終於改變像素中圈阿爾法:
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);}
我希望以上會幫忙。 有趣的問題,我想稍後做一個可運行的演示。
你有沒有解決這個問題? – Spynet
是的,我得到它我正打算解決它改變阿爾法或unerase方式但你救了我...... 我不認爲所以我得到任何有關的,直到一天,我可以幫助,所以我會這樣做在prev的方式你告訴我 –
享受繼續發佈查詢 – Spynet