Как изменить UIImageView alpha onTouchMoved

Я делаю проект с сенсорным движением. Я хочу изменить альфа или видимость (независимо от возможного) изображения в точке, где он коснулся. Скажем, Unhidethat конкретная точка изображения ..

PS Я уже знаю, как стереть изображение. Я ищу unerase

2
Вы получили решение по этой проблеме?
добавлено автор Spynet, источник
Наслаждайтесь поисковыми запросами
добавлено автор Spynet, источник
Да, я понял, я планировал разрешить это в любом случае, изменив альфу или unerase. Но ты спас меня ... Я не думаю, что так получилось, и до тех пор, пока я не смогу помочь, поэтому я собираюсь сделать это в предыдущем порядке ты сказал мне
добавлено автор Shashank Kulshrestha, источник
Надейтесь, что это решение в сообществах Apple поможет вам https://discussions.apple.com/нить/1933811 начать = 0 & Tstart = & ZWNJ;? 0
добавлено автор wod, источник

6 ответы

I think this project does exactly what you're looking for : https://github.com/SebastienThiebaud/STScratchView

У вас есть 2 изображения, где один скрытый образ, а другой - тот, который вы царапаете.

Or even this project : http://www.cocoacontrols.com/platforms/ios/controls/scratch-n-see

2
добавлено
-(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;
}
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;

Чтобы изменить пиксель:

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);}

Надеюсь, что вышеизложенное сделало бы одолжение. Смешной вопрос, я хотел бы сделать runnable demo позже.

1
добавлено

Я считаю, что альфа - это свойство всего представления, поэтому все, что вы можете сделать, это рисовать на этой конкретной точке ... это может быть this - это то, чего вы пытаетесь достичь.

0
добавлено
Спасибо Ankit Но я хочу показать скрытый
добавлено автор Shashank Kulshrestha, источник

Почему бы вам не поместить пустой вид сверху, который заполнен цветом или текстурой, а затем с помощью ответа @AnkitSrivastava дайте прикосновению оттирать части фона представления, показывая скрытое изображение.

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);

  }
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.