如今,每个人都喜欢它们的圆形图像。所以我想我也是。随着那说......
我将UIImage设置为UIButton的背景图像。我需要做的是使轮廓图完全圆润。这是我的代码......任何人都可以指出我正确的方向吗?
NSString* photoUrl = [NSString stringWithFormat:@"%@%@", URL_IMAGE_BASE, photoFileName];
NSURL *myurl2 = [NSURL URLWithString: photoUrl];
UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:myurl2]];
[_goToProfileEditButton setImage:image forState:UIControlStateNormal];
[_goToProfileEditButton setBackgroundImage:image forState:UIControlStateNormal];
答案 0 :(得分:1)
使按钮成为完美的正方形(相同的宽度/高度),并使用按钮图层的cornerRadius
属性,并将其设置为宽度/高度的一半。您需要导入QuartzCore
标头才能访问layer
属性。
答案 1 :(得分:0)
您可以做的是子类UIView
并覆盖drawRect:
方法,如下所示:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextAddEllipseInRect(context, rect);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillPath(context);
}
将视图的clipsToBounds
属性设置为YES
,并将图片视图添加为子类UIView
的子视图。否则,您可以通过CGImageMaskCreate
查看图像的屏蔽。
答案 2 :(得分:0)
如果要从正方形创建圆形图像,则可以使用剪贴蒙版进行创建。它应该如下所示:
// start with the square image, from a file, the network, or wherever...
UIImage * squareImage = [UIImage imageNamed:@"squareImage.png"];
CGRect imageRect = CGRectMake(0, 0, squareImage.size.width, squareImage.size.height);
UIGraphicsBeginImageContextWithOptions(imageRect.size,NO,0.0);
UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:imageRect cornerRadius:imageRect.size.width/2.0f];
[path addClip];
[squareImage drawInRect:imageRect];
UIImage *circleImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// now circleImage contains the circle in the center of squareImage