Tag: 核心graphics

在iOS中,你怎样才能以编程方式填写一个PDF表单字段?

我需要一个现有的PDF文件,并以编程方式填写表单域的文本列表,然后保存PDF,而不会显示给用户。 例如,如果pdf文件包含名为“LastName”和“FirstName”的字段,我想将“FirstName”的值设置为“Louis”,然后保存该文件。 我一直在寻找很长一段时间,甚至没有find任何指导,因为iOS文档(和这里的大多数问题)似乎适用于显示或创buildPDF内容,而不是修改它。 编辑: 我的主要问题是:是否有可能打开一个PDFstream(我知道如何做到这一点),并将每个现有的PDF字典项目复制到一个新的PDF? 我一直无法find一种方法来将字典项目写成pdf。

UIGraphicsGetImageFromCurrentImageContext()提供更高质量的图像

我目前使用UIGraphicsGetImageFromCurrentImageContext()将内容的图像保存到用户的相机胶卷上,但是图像质量比在模拟器中执行屏幕截图时差。 有什么办法可以改善吗? 而且保存的图像的格式是什么? BMP? 有什么方法可以改变这个吗? 这是我的保存代码: CGSize size = [content bounds].size; UIGraphicsBeginImageContext(size); [[content layer] renderInContext:UIGraphicsGetCurrentContext()]; UIImage *originalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

用CALayers添加掩码

我似乎有困难通过CALayers添加面具。 我只是想掩盖一个UIImageView。 这是我的代码: CALayer *maskLayer = [CALayer layer]; UIImage *mask = [UIImage imageNamed:@"mask.png"]; maskLayer.contents = mask; UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; viewToMask.image = [UIImage imageNamed:@"picture.png"]; viewToMask.layer.mask = maskLayer; [self.view addSubview:viewToMask]; Mask.png是黑色的,穿透它的是一个透明的圆圈(这是掩盖的正确方法?)。 我不知道这是失败的,也许在maskLayer.contents因为它应该是一个CGImageRef但我得到错误,当我把它设置为mask.CGImage ,或通过本地variablesCGImageRef = mask.CGImage 。 无论如何,它现在的方式不会给出错误,所以我希望它的罚款。 有谁知道发生了什么,或者如何正确设置CALayers的面具? 谢谢

如何使用CAGradientLayer绘制渐变色轮?

我从这些链接中得到了一些参考 – 色轮背后的algorithm是什么? 色轮后面的math 基本的配色scheme 如何用渐变色填充贝塞尔path 我已经经历了“HSV色彩空间”的概念。 但是我想在CAGradientLayer的帮助下使用RGB绘制一个色轮。 这是通过使用简单的RGB颜色数组和UIBezierPath制作色轮的代码片段 – func drawColorWheel() { context?.saveGState() range = CGFloat(100.00 / CGFloat(colorArray.count)) for k in 0 ..< colorArray.count { drawSlice(startPercent: CGFloat(k) * range, endPercent: CGFloat(CGFloat(k + 1) * range), color: colorArray.object(at: k) as! UIColor) } context?.restoreGState() } func drawSlice(startPercent: CGFloat, endPercent: CGFloat, color: UIColor) { let startAngle = […]

为什么-drawRect比使用CALayers / UIViews更快的UITableView?

我已经可以听到一千个iOS开发人员痛苦的胆量。 不,我不是小白。 为什么-drawRect比UITableView性能要快多个视图? 我明白合成操作发生在GPU上。 但合成是一次性的操作; 一旦这些图层被提交到内存中,从GPU的angular度来看,它与caching的缓冲区没有区别。 比较一下,在drawRect中使用Core Graphics,在CPU上使用未知数量的操作来产生最终在CALayers中caching的像素。 如果这一切都结束了caching和扁平化,有什么区别? 另外,如果您正在处理单元重用,则不必在每次调用-cellForRowAtIndexPath时重新生成视图。 实际上,UIView / CALayer对象caching状态数据(字体,字体大小,文本颜色,属性等)可能会带来性能上的好处,而不是在-drawRect期间不断重新创build它们。 为什么drawRect的热潮? 有人能给我指针吗?

如何突出CoreText与改变高亮颜色?

我有一个UIView的子类,它实现了绘制CoreText的代码。 在应用程序中,UIView是在UIScrollView中绘制的。 这里是我目前在drawRect中使用的代码:呈现一个NSAttributedString: CGContextRef context = UIGraphicsGetCurrentContext(); float viewHeight = self.bounds.size.height; CGContextTranslateCTM(context, 0, viewHeight); CGContextScaleCTM(context, 1.0, -1.0); CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, 1.0)); CGMutablePathRef path = CGPathCreateMutable(); CGRect bounds = CGRectMake(PADDING_LEFT, -PADDING_TOP, self.bounds.size.width-20.0, self.bounds.size.height); CGPathAddRect(path, NULL, bounds); CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFMutableAttributedStringRef)attrString); CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL); CFRelease(framesetter); CFRelease(path); CTFrameDraw(frame, context); 在我的NSAttributedString中,我有一些文本属性给文本着色。 我需要帮助的是在概念上,这应该如何实现? 我很困惑所有绘制框架,图层等各种方法。我试图回顾几本书和其他资源,但我觉得我错过了一些基本的东西。 这是我的要求: 明显的亮点需要重新绘制到新的位置的方向变化。 […]

Xcode:使用核心图像合成alpha

我想要创build一个CoreImage过滤链,并能够通过合成其单独的效果与alpha或不透明度设置来控制链中每个filter的“强度”,但我没有看到一种方法来与alpha或文档中的不透明度。 我可以跳出核心图像filter链,并与核心graphics上下文我想。

使用coregraphics,通过触摸擦除和删除UIImageVIew中的图像

我的问题和这里提到的一样。 我也在我的应用程序中使用两个图像,我需要的是通过触摸删除顶部图像。 然后通过触摸删除(如果需要)删除的部分。 我正在使用以下代码来擦除顶部图像。 这种方法也有问题。 这是图像很大,我使用Aspect Fit内容模式来正确显示它们。 当我触摸屏幕时,它在angular落而不是触摸的地方。 我认为接触点计算需要一些修复。 任何帮助将不胜感激。 第二个问题是如何通过触摸来删除已擦除的部分? UIGraphicsBeginImageContext(self.imgTop.image.size); [self.imgTop.image drawInRect:CGRectMake(0, 0, self.imgTop.image.size.width, self.imgTop.image.size.height)]; self.frame.size.width, self.frame.size.height)]; CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); GContextSetLineWidth(UIGraphicsGetCurrentContext(), pinSize); CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0, 0, 0, 1.0); CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy); CGContextBeginPath(UIGraphicsGetCurrentContext()); CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); CGContextStrokePath(UIGraphicsGetCurrentContext()); self.imgTop.contentMode = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

iOS:创buildUIImage的较暗版本并保持透明像素不变?

我发现 通过向现有的UIImage添加阴影来创build新的UIImage 和 UIImage,有没有一种简单的方法来使它更黑或全黑 但选定的答案不适合我。 我有一个UIImage,它可能有一些透明的像素,我需要创build一个新的UIImage与不透明的像素变暗,有没有办法做到这一点? 我正在考虑使用UIBezierPath,但我不知道如何做只为非透明的像素。

使用CGContextAddArcToPoint()绘制圆弧时,(x1,y1)和(x2,y2)是什么意思?

你可以使用下面的代码来使用Quartz绘制一个弧: CGContextMoveToPoint(context2, x, y); CGContextAddArcToPoint(context2, x1, y1, x2, y2, r); 在这些函数中, (x,y)是起点, r是圆弧半径,但是(x1,y1)和(x2,y2)什么?