Ajustando la línea para caber nuestra cabeza en imageview

Estoy desarrollando una aplicación igual que HairTryOn, todo está hecho. pero el problema se muestra en la siguiente image. Quiero configurar el estilo de peinado según la cara del cliente utilizando la línea azul como se muestra en la image. utilicé el siguiente código

testVw = [[UIView alloc]initWithFrame:CGRectMake(100,100, 100, 100)]; testVw.backgroundColor = [UIColor clearColor]; [self.view addSubview:testVw]; resizeVw = [[UIImageView alloc]initWithFrame:CGRectMake(testVw.frame.size.width-25, testVw.frame.size.height-25, 25, 25)]; resizeVw.backgroundColor = [UIColor clearColor]; resizeVw.userInteractionEnabled = YES; resizeVw.image = [UIImage imageNamed:@"button_02.png" ]; [testVw addSubview:resizeVw]; UIPanGestureRecognizer* panResizeGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(resizeTranslate:)]; [testVw addGestureRecognizer:panResizeGesture]; 

El método resizeTranslate: :

 -(void)resizeTranslate:(UIPanGestureRecognizer *)recognizer { if ([recognizer state]== UIGestureRecognizerStateBegan) { prevPoint = [recognizer locationInView:testVw.superview]; [testVw setNeedsDisplay]; } else if ([recognizer state] == UIGestureRecognizerStateChanged) { if (testVw.bounds.size.width < 20) { testVw.bounds = CGRectMake(testVw.bounds.origin.x, testVw.bounds.origin.y, 20,testVw.bounds.size.height); imgvw.frame = CGRectMake(12, 12, testVw.bounds.size.width-24, testVw.bounds.size.height-27); resizeVw.frame =CGRectMake(testVw.bounds.size.width-25, testVw.bounds.size.height-25, 25, 25); rotateVw.frame = CGRectMake(0, testVw.bounds.size.height-25, 25, 25); closeVw.frame = CGRectMake(0, 0, 25, 25); } if(testVw.bounds.size.height < 20) { testVw.bounds = CGRectMake(testVw.bounds.origin.x, testVw.bounds.origin.y, testVw.bounds.size.width, 20); imgvw.frame = CGRectMake(12, 12, testVw.bounds.size.width-24, testVw.bounds.size.height-27); resizeVw.frame =CGRectMake(testVw.bounds.size.width-25, testVw.bounds.size.height-25, 25, 25); rotateVw.frame = CGRectMake(0, testVw.bounds.size.height-25, 25, 25); closeVw.frame = CGRectMake(0, 0, 25, 25); } CGPoint point = [recognizer locationInView:testVw.superview]; float wChange = 0.0, hChange = 0.0; wChange = (point.x - prevPoint.x); //Slow down increment hChange = (point.y - prevPoint.y); //Slow down increment testVw.bounds = CGRectMake(testVw.bounds.origin.x, testVw.bounds.origin.y, testVw.bounds.size.width + (wChange), testVw.bounds.size.height + (hChange)); imgvw.frame = CGRectMake(12, 12, testVw.bounds.size.width-24, testVw.bounds.size.height-27); resizeVw.frame =CGRectMake(testVw.bounds.size.width-25, testVw.bounds.size.height-25, 25, 25); rotateVw.frame = CGRectMake(0, testVw.bounds.size.height-25, 25, 25); closeVw.frame = CGRectMake(0, 0, 25, 25); prevPoint = [recognizer locationInView:testVw.superview]; [testVw setNeedsDisplay]; } else if ([recognizer state] == UIGestureRecognizerStateEnded) { prevPoint = [recognizer locationInView:testVw.superview]; [testVw setNeedsDisplay]; } } 

Este código Cambiar el tamaño de la vista completa. pero quiero cambiar el tamaño solo a la parte que se mueve con el dedo. introduzca la descripción de la imagen aquí

No veo cómo se construyen tus primitivos. Pero necesitará dividir su set de puntos de acuerdo con las zonas táctiles y escalar según sea necesario. Si convierte sus líneas en curvas de Bézier, entonces manipular la curva será más fácil, ya que no tendrá que hacer una terrible modificación de la forma con pequeñas modificaciones.