我使用下面的代码从cameraroll中为所选图像添加文本和边框。
-(UIImage*)image:(UIImage*)image withText:(NSString*)text atPoint:(CGPoint)point{
if (text) {
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
[image drawInRect:rect];
NSDictionary *attributes = @{NSFontAttributeName : [UIFont boldSystemFontOfSize:80],
//NSStrokeWidthAttributeName : @(4),
NSStrokeColorAttributeName : [UIColor whiteColor]};
[text drawAtPoint:point withAttributes:attributes];
CALayer *l = [self.imageView layer];
[l setBorderWidth:10.0];
[l setBorderColor:[[UIColor blueColor] CGColor]];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newImage;
}
当我点击我的应用程序中的保存按钮时,我将已编辑的图像保存到cameraroll。但是,在cameraroll中编辑的图像只有没有任何添加边框的文本。我是否遗漏了以上代码中的任何内容来添加和保存图像周围的边框?除了CALayer之外还有其他方法可以添加边框吗?
答案 0 :(得分:1)
替换它:
CALayer *l = [self.imageView layer];
[l setBorderWidth:10.0];
[l setBorderColor:[[UIColor blueColor] CGColor]];
有了这个:
UIBezierPath *rectangleBezier = [UIBezierPath bezierPathWithRect:rect];
rectangleBezier.lineWidth = 20.0f; // 10 * 2 because line drawn from the center of edge
[[UIColor blueColor] setStroke];
[rectangleBezier stroke];
<强>说明:强>
CALayer *l = [self.imageView layer];
与UIImage数据无关。 imageView的图层更改imageView演示文稿。不是UIImage的内容。
答案 1 :(得分:0)
我将回复“在UIVmage中添加边框在UIView中”
从目前为止,最简单的方法是在视图层次结构中插入另一个视图。
[self.view insertSubview:({
UIView * border = [[UIView alloc]
initWithFrame:CGRectInset(self.imageView.frame, -1, -1)];
border.backgroundColor = [UIColor blueColor];
border;
})
belowSubview:self.imageView];