标签: core-graphics

CGLayer和CALayer有什么区别和兼容性?

我很困惑CGLayerCALayer.它们看起来很相似,为什么还有单独的实现呢?什么之间的区别,以及兼容性,CGLayerCALayer

cocoa core-graphics calayer cglayer

52
推荐指数
1
解决办法
8762
查看次数

在iPhone/iOS上使用"颜色错位图像"时,黄色着色表示什么

所以 - 我打开了"颜色错位图像",以提高我们的应用程序中的绘图性能.文件说明:

在源像素未与目标像素对齐的图像上放置洋红色覆盖

但我不知道黄色意味着什么.(有一个"彩色屏幕外渲染"选项,使用黄色..."颜色未对齐图像"也打开此选项吗?)

有人知道吗?

TIA

iphone core-animation core-graphics instruments ios

51
推荐指数
1
解决办法
1万
查看次数

为给定的UIColor获得更浅和更暗的颜色变化

如何在Swift中获得给定UIColor的不同更亮和更暗的变化?

在此输入图像描述

core-graphics colors uicolor ios swift

51
推荐指数
5
解决办法
2万
查看次数

如何使用kCGImagePropertyGIFImageColorMap或创建颜色表?

我正在尝试修改一些GIF属性,例如Core Graphics中的kCGImagePropertyGIFImageColorMapkCGImagePropertyGIFHasGlobalColorMap(引用).

我正在创建动画GIF,我想看看我是否可以通过播放大量的颜色来提高质量.我只发现了另一个代码示例,我不确定它是否有效.

我尝试使用上面链接的几个示例代码,但它似乎不起作用.设置kCGImagePropertyGIFHasGlobalColorMap似乎也没有做任何事情.谢谢

cocoa core-graphics objective-c

49
推荐指数
1
解决办法
2110
查看次数

更新模型层时,CABasicAnimation无法正确设置动画

我目前正在实施一个CABasicAnimation动画CALayer transform属性.现在,虽然我是Core Animation的新手,但我已经能够收集各种博客和文章,例如objc.io,使用经常(错误的)推荐的方法来获取动画以坚持使用是非常糟糕的主意.fillModeremovedOnCompletion动画的属性.这种方法被很多人认为是不好的做法,因为它会在模型​​层和表示层之间产生差异,因此未来对其中一个层的查询可能与用户看到的不匹配.

相反,推荐的动画制作方法是在将动画添加到动画图层的同时更新模型图层.但是,我很难理解这是如何工作的.我的动画很简单,就像这样:

CATransform3D updatedTransform = [self newTransformWithCurrentTransform];
// Location 1
CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
transformAnimation.duration = 1;
transformAnimation.fromValue = [NSValue valueWithCATransform3D:self.layerBeingAnimated.transform]; // Does not work without this.
transformAnimation.toValue = [NSValue valueWithCATransform3D:updatedTransform];
// Location 2
[self.layerBeingAnimated addAnimation:transformAnimation forKey:kTransformAnimationKey];
// Location 3
Run Code Online (Sandbox Code Playgroud)

我已经指出了三个尝试使用代码更新模型层的位置

self.layerBeingAnimated.transform = updatedTransform;
Run Code Online (Sandbox Code Playgroud)

在位置1中,图层向右跳转newTransform并且不动画.在位置2中,图层完全按照我想要的方式从当前变换设置为动画newTransform.在位置3中,图层向右跳转newTransform,跳回到旧变换,从fromValue到newTransform正确动画,然后保持在newTransform.

这是什么交易?更新模型层的正确位置是什么?为什么这三个位置会产生不同的结果?

谢谢!

iphone core-animation core-graphics calayer ios

46
推荐指数
1
解决办法
4490
查看次数

圆角仅在UIView之上

嗨,我正在寻找一个干净的解决方案,没有覆盖drawRect或类似的东西UIView,在视图的顶部创建一个圆角.我的主要问题是如果视图调整大小或类似的话,创建变量解决方案.有清洁的解决方案吗?Apple也是第一个表项目.做到这一点并不难.

core-graphics objective-c rounded-corners uiview

45
推荐指数
5
解决办法
4万
查看次数

从枚举类型'枚举CGImageAlphaInfo'到不同枚举类型'CGBitmapinfo'(又名''枚举CGBitmapInfo')的隐式转换

我正在xCode5上将旧的iOS 5项目转换为iOS6.0,并且大多数警告和错误已经修复但是对于这个.有关如何重写代码以避免编译器警告的任何建议.

#define kBitsPerComponent 8
#define kBitmapInfo       kCGImageAlphaPremultipliedLast

 - (UIImage*)scaleToSize:(CGSize)size :(UIImage *)image
{
CGBitmapInfo bitmapInfo = kBitmapInfo;
size_t bytesPerRow = size.width * 4.0;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, size.width,
                                             size.height, kBitsPerComponent,
                                             bytesPerRow, colorSpace, bitmapInfo);

CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
CGContextDrawImage(context, rect, image.CGImage);

CGImageRef scaledImageRef = CGBitmapContextCreateImage(context);
UIImage* scaledImage = [UIImage imageWithCGImage:scaledImageRef];

CGImageRelease(scaledImageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);

return scaledImage;
}
Run Code Online (Sandbox Code Playgroud)

代码提供警告隐式转换从枚举类型'枚举CGImageAlphaInfo'到不同的枚举类型'CGBitmapinfo'(又名)'枚举CGBitmapInfo')

如果有人可以帮助修改代码,我将非常感激.

enums core-graphics ios

45
推荐指数
1
解决办法
2万
查看次数

绕一点旋转的一步仿射变换?

如何只使用一次CGAffineTransformMake()加上math.h触发函数(如sin(),cos()等),围绕角度a的x,y点旋转进行Core Graphics仿射变换.没有其他CG电话.

这里的其他答案似乎是使用多个堆叠变换或多步变换来移动,旋转和移动,使用多个Core Graphics调用.这些答案不符合我的具体要求.

math core-graphics cgaffinetransform ios

43
推荐指数
2
解决办法
4万
查看次数

如何在drawRect中填充渐变路径:?

用纯色填充路径很容易:

CGPoint aPoint;
for (id pointValue in points)
{
    aPoint = [pointValue CGPointValue];
    CGContextAddLineToPoint(context, aPoint.x, aPoint.y);
}
[[UIColor redColor] setFill];
[[UIColor blackColor] setStroke];
CGContextDrawPath(context, kCGPathFillStroke);
Run Code Online (Sandbox Code Playgroud)

我想绘制渐变而不是纯红色,但我遇到了麻烦.我已经尝试了问题/答案中列出的代码:iPhone上的UIView和UILabels上的渐变

这是:

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setFrame:rect];
[gradient setColors:[NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor],
                (id)[[UIColor whiteColor] CGColor], nil]];
[[self layer] setMasksToBounds:YES];

[[self layer] insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)

然而,这描绘了整个视图,它与渐变一起,掩盖了我的原始路径.

iphone core-graphics quartz-graphics drawrect

40
推荐指数
1
解决办法
4万
查看次数

CoreGraphics,UIViews和CALayers之间的关系

我总是使用CoreGraphics和CoreAnimation,我理解他们每个人如何自己工作,但不是那些必须与另一个人交谈时的边缘情况.我也明白UIViews是一个很好的包装器CALayer,CALayer渲染的所有重要部分,以及UIView基于触摸的响应性增加.

但是,到目前为止我所看到的所有问题都是从一方或另一方面解决问题,而不是它们之间的相互作用,特别是在CoreGraphics和CALayer.之间.

无论如何,我的问题是......

CoreGraphics如何与CALayer相关?

我的理解是,CALayer包装CoreGraphics方法来绘制自己,但是只执行一次,并且可以使用自身的快照直到无效.但是,这些绘图方法如何与该层的子图层相互作用?它们是独家的吗?

例如,当我有一个UIView具有子视图的情况时会发生什么,并且我重载了该drawRect方法?这对它的子图层的绘制有何影响?

将两者混合在同一个函数中是不是一个好主意?

另外,我只询问iOS,我知道Mac是一个不同的野兽(也有那些花哨的CIFilters,混蛋!).

先前的研究

以下是我事先研究过的一些相关问题:

  1. 关于quartz2d,核心图形,核心动画,核心图像的混淆.这个问题询问了彼此之间的差异,并且所选择的答案确实提供了,但它解决了每个单独的库,就像另一个不存在一样.
  2. 绘制还是不绘制.另一个很好的问题,但它只涉及绘制CoreGraphics与将问题交给UIKit的主题,但无论如何,所选择的答案提供了部分难题.
  3. 使用自定义CALayer动画饼图切片.必须是我在这个主题中看到的最有价值的教程之一,它是唯一一个指导我绘制CALayer的教程
  4. CoreGraphics和CoreAnimation之间有什么不同对于提问者接受答案的速度有多快感到失望,我觉得这里有更多的内容.
  5. 各种WWDC视频,但我没有看到详细解释一般范围的视频.如果有人回复了WWDC视频,我会认为这是一个有效的答案.

core-animation core-graphics ios

39
推荐指数
1
解决办法
4045
查看次数