如何在uiimageview中的图像上制作圆角?

时间:2010-09-01 18:28:24

标签: iphone uiimageview uiimage border

我在uiimageview中有一个uiimage。 uiimage并没有填满整个uiimageview。我试图有一个带圆角的边框,但只是在uiimage周围,而不是整个uiimageview。无法弄清楚如何获得它。我有

homeButtonImage.layer.cornerRadius = 5;
homeButtonImage.layer.masksToBounds = YES;
homeButtonImage.layer.borderColor = [UIColor blackColor].CGColor;
homeButtonImage.layer.borderWidth = 3.0;

但是它绘制了整个uiimageview的边框,而不仅仅是uiimage。帮助

编辑:nvm想通了。我把它作为一个IBOutlet让它弄乱了。

4 个答案:

答案 0 :(得分:2)

您需要添加[homeButtonImage setMasksToBounds:YES],否则不会反映更改。

答案 1 :(得分:0)

我认为最简单的方法是让你的UIImageView对象与UIImage的大小相匹配。 如果您需要在固定大小的视图中包含该图像,请将该UIImageView放在UIView(或其他UIImageView)中。

或者实际上最简单的方法是简单地在图像文件中创建圆形边框,但我认为这不适合你。

你也可以采用复杂的路径和子类UIView并覆盖drawRect,在实际的UIImage周围剪切上下文并用CGContextDrawImage(ctx, rect, image.CGImage)绘制它,但我认为这有点过分。

答案 2 :(得分:0)

在imageview上调用sizeToFit。这应该使它自己调整大小以匹配图像的大小。

答案 3 :(得分:0)

-(UIImage *)makeRoundedImage:(UIImage *) image 
                      radius: (float) radius;
{
  CALayer *imageLayer = [CALayer layer];
  imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
  imageLayer.contents = (id) image.CGImage;

  imageLayer.masksToBounds = YES;
  imageLayer.cornerRadius = radius;

  UIGraphicsBeginImageContext(image.size);
  [imageLayer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return roundedImage;
}