2017-02-21 2 views
0

Я работаю над коллажем и в представлении коллажа Мне нужно установить ширину рамки и угловой радиус рамки, вид будет подслоем другого вида и заднего вида будет иметь цвет фона как brown.I можно изменить ширину границы и угол радиус с помощью слайдера, но после этого я получаю маленькую крошечную линию границы (как тень) вокруг view.I пытался использовать непрозрачность тени, но он didn ' т работы. ниже мой код.Получение границы с UIView при применении границы Ширина и граница Цвет

- (IBAction)sliderActionToChangeCornerWidthOfView:(id)sender { 
 
    
 
    UISlider *slider = (UISlider*)sender; 
 
    
 
    
 
    int i=0; 
 
    
 
    for (CollageView *viewCollage in self.collageView.subviews) { 
 
     
 
     if ([viewCollage isKindOfClass:[CollageView class]]) { 
 
      
 
      
 
      self.appDelg.borderWidth = slider.value/2; 
 

 
      if ([[array objectAtIndex:i] valueForKey:@"path"]!=nil) { 
 
       
 
       
 
       
 
       if (arrayOfLayers.count > 0) { 
 
        
 
        [arrayOfLayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)]; 
 

 
       } 
 

 
       NSMutableArray *arrayToRadius = [[NSMutableArray alloc] init]; 
 
       arrayToRadius = [arrayToRadius getArrayOfCollages:_collageView.bounds.size numberOfCollages:numberOfCollages]; 
 
       NSArray *arrayToChangeCornerRadius=[[[arrayToRadius objectAtIndex:btnClickIndex] valueForKey:@"values"] objectAtIndex:0]; 
 
       
 
       UIBezierPath *starPath=[[arrayToChangeCornerRadius objectAtIndex:i] valueForKey:@"path"]; 
 
       
 
       
 
       CAShapeLayer *cornerMaskLayer = [CAShapeLayer layer]; 
 
       [cornerMaskLayer setPath:starPath.CGPath]; 
 
       viewCollage.layer.mask = cornerMaskLayer; 
 
       CAShapeLayer *strokeLayer = [CAShapeLayer layer]; 
 
       strokeLayer.path = starPath.CGPath; 
 
       strokeLayer.lineWidth = self.appDelg.borderWidth; 
 
       
 
       strokeLayer.lineJoin = kCALineJoinRound; 
 
       // the stroke splits the width evenly inside and outside, 
 
       strokeLayer.fillColor = [UIColor clearColor].CGColor; 
 
       
 
       if (patternImage!=nil) { 
 
        strokeLayer.strokeColor = [UIColor colorWithPatternImage:[self patterDraw]].CGColor; 
 

 
       } 
 
       else 
 
       { 
 
        strokeLayer.strokeColor = borderColour.CGColor; 
 

 
       } 
 
       CGRect rect=CGPathGetBoundingBox(starPath.CGPath); 
 
       [viewCollage layoutIfNeeded]; 
 
       
 
       strokeLayer.shadowOpacity = 0.0; 
 
       [arrayOfLayers addObject:strokeLayer]; 
 
      
 
       [viewCollage.layer addSublayer:strokeLayer]; 
 

 
       NSLog(@"value : %@", NSStringFromCGRect(viewCollage.frame)); 
 
       
 
      } 
 
      else 
 
      { 
 
       
 
       if (patternImage!=nil) { 
 
        viewCollage.layer.borderColor = [UIColor colorWithPatternImage:[self patterDraw]].CGColor; 
 
        
 
       } 
 
       else 
 
       { 
 
        viewCollage.layer.borderColor = borderColour.CGColor; 
 
        
 
       } 
 
       
 
       viewCollage.layer.borderWidth = slider.value/2; 
 

 

 
      } 
 
      
 
      
 
      i++; 
 
     } 
 
    } 
 

 
    
 
} 
 
- (IBAction)sliderActionToChangeCornerRadius:(id)sender { 
 
    UISlider *slider = (UISlider*)sender; 
 

 
    
 
    
 
    int i = 0; 
 

 

 
    
 
    for (CollageView *viewCollage in self.collageView.subviews) { 
 
     
 
     if ([viewCollage isKindOfClass:[CollageView class]]) { 
 
      
 
      self.appDelg.cornerRadiusValue = slider.value; 
 

 
      
 
      if ([[array objectAtIndex:i] valueForKey:@"path"]!=nil) { 
 

 
       
 
       if (arrayOfLayers.count > 0) { 
 
        
 
        [arrayOfLayers makeObjectsPerformSelector:@selector(removeFromSuperlayer)]; 
 
        
 
       } 
 
       
 
       NSMutableArray *arrayToRadius = [[NSMutableArray alloc] init]; 
 
       arrayToRadius = [arrayToRadius getArrayOfCollages:_collageView.bounds.size numberOfCollages:numberOfCollages]; 
 
       NSArray *arrayToChangeCornerRadius=[[[arrayToRadius objectAtIndex:btnClickIndex] valueForKey:@"values"] objectAtIndex:0]; 
 
       
 
       
 
       
 
       UIBezierPath *starPath=[[arrayToChangeCornerRadius objectAtIndex:i] valueForKey:@"path"]; 
 
       CAShapeLayer *cornerMaskLayer = [CAShapeLayer layer]; 
 
       [cornerMaskLayer setPath:starPath.CGPath]; 
 
       viewCollage.layer.mask = cornerMaskLayer; 
 
       CAShapeLayer *strokeLayer = [CAShapeLayer layer]; 
 
       strokeLayer.path = starPath.CGPath; 
 
       strokeLayer.lineWidth = self.appDelg.borderWidth; 
 
       
 
       strokeLayer.lineJoin = kCALineJoinRound; 
 
       // the stroke splits the width evenly inside and outside, 
 
       strokeLayer.fillColor = [UIColor clearColor].CGColor; 
 
       if (patternImage!=nil) { 
 
        strokeLayer.strokeColor = [UIColor colorWithPatternImage:[self patterDraw]].CGColor; 
 
        
 
       } 
 
       else 
 
       { 
 
        strokeLayer.strokeColor = borderColour.CGColor; 
 
        
 
       } 
 
       CGRect rect=CGPathGetBoundingBox(starPath.CGPath); 
 
       [viewCollage layoutIfNeeded]; 
 
       
 
       
 
       
 
       
 

 
       [arrayOfLayers addObject:strokeLayer]; 
 
       [viewCollage.layer addSublayer:strokeLayer]; 
 
    
 
       
 
       
 
       
 
       NSLog(@"value : %@", NSStringFromCGRect(viewCollage.frame)); 
 
       
 
      } 
 
      
 
     else 
 
      { 
 
       viewCollage.layer.cornerRadius = slider.value; 
 
      } 
 
      
 
      
 
      
 
      i++; 
 
      
 
     } 
 
    } 
 

 
    
 
}

Ниже приведен скриншот вопрос, который я столкнулся

This is the issue

Может кто-нибудь, пожалуйста, помогите мне в этом вопросе.

ответ

0

Вы можете получить угол зрения на следующий код: -

CGFloat radians = atan2f(view.transform.b, view.transform.a); 
CGFloat degrees = radians * (180/M_PI); 

Вы можете попробовать один раз, добавив следующую строку: -

UIImageView.clipsToBounds в YES

Это поможет для получения радианов и степеней вращения конкретного вида.

Надеюсь, что это сработает!

+0

Я не поворачиваю этот вид. Это не проблема. когда я применяю цвет границы с коричневым, я получаю белую крошечную линию вокруг этого вида. Пожалуйста, проверьте скриншот (проблема отмечена красной стрелкой). – Uttam

Смежные вопросы