搜索

首页  >  问答  >  正文

ios - 在image上切一个透明的圆

结构层次:UIView->UIImageView->UIImage,即把带有图片的imageview添加到UIView上,现在要在图片上 切一个透明的圆

PHPzPHPz2893 天前276

全部回复(3)我来回复

  • 迷茫

    迷茫2017-04-18 09:05:31

    参考以下代码:

    - (void)addShadowView {
        self.hollowFrames = @[[NSValue valueWithCGPoint:CGPointMake(20.0, 20.0)], [NSValue valueWithCGPoint:CGPointMake(120.0, 20.0)]];
    
        int radius = 15.0;
        UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height) cornerRadius:0];
    
        for (NSValue *point in self.hollowFrames) {
            UIBezierPath *circlePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(point.CGPointValue.x, point.CGPointValue.y, 2.0*radius, 2.0*radius) cornerRadius:radius];
            [path appendPath:circlePath];
        }
    
        [path setUsesEvenOddFillRule:YES];
    
        CAShapeLayer *fillLayer = [CAShapeLayer layer];
        fillLayer.path = path.CGPath;
        fillLayer.fillRule = kCAFillRuleEvenOdd;
        fillLayer.fillColor = [UIColor blackColor].CGColor;
        fillLayer.opacity = 0.5;
        [self.layer addSublayer:fillLayer];
    }
    

    refs: http://stackoverflow.com/a/18925731/4733603

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 09:05:31

    用PS钢笔工具勾出来,或者用魔术选取工具把白色部分选中并删除。

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:05:31

    如果是网页的话:css的border-radius属性,能给你一点启发。

    <html>
    <head>
     <style>
       .box{
         width:50px;
         height:50px;
         border-radius:50%;
         overflow:hidden;
       }
     </style>
    </head>
    <body>
     <p class="box">
       <img src="./images/1.jpg" />
     </p>
    </body>
    </html>

    回复
    0
  • 取消回复