我希望在iPhone中添加新联系人时实现“添加照片”等功能。在iPhone中点击“添加照片”(添加新的联系人时),它会从图像中选择一个圆形。如何在我的应用程序中实现此功能?
TIA
答案 0 :(得分:0)
您可以使用UIImageView
图层角半径。其他方法是覆盖drawRect:
并在那里绘制自定义形状... drawRect:
中未调用UIImageView
。
来自Apple的文档:
优化UIImageView类以将其图像绘制到显示器。 UIImageView不调用其子类的drawRect:方法。如果您的子类需要包含自定义绘图代码,则应该改为继承UIView类
有一次,我做了诀窍,简单地用UIImageView
覆盖了内部裁剪圆圈的视图,这样印象就是图像有圆形。
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor whiteColor] set]; // The background is white
UIRectFill(rect);
// self.cropRect is your cropping area, depending on an imageView
rect = CGRectInset(self.cropRect, 1, 1);
// The key expression here, makes bezier path drawn in opposite direction
CGContextSetBlendMode(context, kCGBlendModeDestinationOut);
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:rect.size.width * 0.5f];
[path fill];
// Back to normal settings.
CGContextSetBlendMode(context, kCGBlendModeNormal);
[[UIColor whiteColor] set];
CGContextStrokeEllipseInRect(context, rect);
}
答案 1 :(得分:0)
圆角是最简单的方法。否则,有CAShapeLayer,您可以将其设置为要裁剪的视图图层的蒙版。
答案 2 :(得分:0)
我的猜测是你可能希望mask你的UIImageView
对象。看一下本教程,其中CoreGraphics
用于解决此问题。
快乐编码!!
答案 3 :(得分:0)
这是我做的圆形裁剪(圆形)轮廓图像:
我在IB中添加了一个UIImageView,并给它一个48x48的修复大小。我添加了一种方法来进行图像更新,这使得图像图标具有透明背景的圆形形状......
@property (nonatomic, weak) UIImageView* icon;
// ...
- (void)updateIconWithImageData:(NSData*)someImageData
{
self.icon.image = [UIImage imageWithData:someImageData];
self.icon.layer.cornerRadius = 24;
self.icon.layer.masksToBounds = YES;
self.icon.layer.shouldRasterize = YES;
}