IOS: UIImageView border white with radius display a strange dark line in 4 corners

后端 未结 7 2016
说谎
说谎 2020-12-18 15:59

I set the border white and radius for my ImageView. But in 4 corner of the ImageView, some dark line appear.
Here is the code I set the color

7条回答
  •  无人及你
    2020-12-18 16:40

    Updated code

    I tried your code actually your image size is big initially I resized the image based on original Image size

    UIImage *myIcon = [self imageWithImage:[UIImage imageNamed:@"abc.jpg"] scaledToSize:CGSizeMake(400, 400)];
    self.image.image = myIcon;
    

    sometimes corner radius does not work properly so I used UIBezierPath for this concept

     UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:self.image.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)];
    
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = self.view.bounds;
    maskLayer.path = maskPath.CGPath;
    self.image.layer.mask = maskLayer;
    

    for border color and width use this

    swift 3

    let maskPath = UIBezierPath(roundedRect: imageView.bounds, byRoundingCorners: ([.topLeft, .topRight, .bottomLeft, .bottomRight]), cornerRadii: CGSize(width: 10.0, height: 10.0))
    
    
        let borderShape = CAShapeLayer()
        borderShape.frame = self.imageView.bounds
        borderShape.path = maskPath.cgPath
        borderShape.strokeColor = UIColor.white.cgColor
        borderShape.fillColor = nil
        borderShape.lineWidth = 3
        self.imageView.layer.addSublayer(borderShape)
    

    output

    Update

    CAShapeLayer*   borderShape = [CAShapeLayer layer];
    borderShape.frame = self.image.bounds;
    borderShape.path = maskPath.CGPath;
    borderShape.strokeColor = [UIColor whiteColor].CGColor;
    borderShape.fillColor = nil;
    borderShape.lineWidth = 3;
    [self.image.layer addSublayer:borderShape];
    

    Swift

    var borderShape: CAShapeLayer = CAShapeLayer.layer
    borderShape.frame = self.image.bounds
    borderShape.path = maskPath.CGPath
    borderShape.strokeColor = UIColor.whiteColor().CGColor
    borderShape.fillColor = nil
    borderShape.lineWidth = 3
     self.image.layer.addSublayer(borderShape)
    

    Output

    Code for whole project

提交回复
热议问题