草庐IT

iphone - 带有旋转动画的 CALayer

我屏蔽了这样一张图片:UIView*maskImage;maskImage=[[UIViewalloc]init];maskImage.backgroundColor=UIColorFromRGB(FTRMaskColor);maskImage.frame=newFrame;CALayer*theLayer=[CALayerlayer];theLayer.contents=(id)[[UIImageimageNamed:@"image.png"]CGImage];theLayer.frame=newFrame;maskImage.layer.mask=theLayer;它工作正常,但主

ios - 确定 CALayer 旋转了多少

我有一个程序,其中CALayer必须旋转到某个值。如何确定CALayer的当前旋转?我有一个旋转图层的UIRotationGestureRecognizer:-(void)handleGesture:(UIGestureRecognizer*)gestureRecognizer{if(gestureRecognizer==rotationGestureRecognizer){NSLog(@"gestureRecRotation:%f",rotationGestureRecognizer.rotation);CATransform3Dcurrent=_baseLayer.transfor

iphone - 我怎么能欺骗 [CALayer renderInContext : ] to render only a section of the layer?

我很清楚,除了渲染整个View和裁剪之外,没有什么好的方法可以将UIView的一小部分渲染为图像。(在iPad3之类的东西上非常昂贵,其中生成的图像很大)。参见here有关renderInContext方法的说明(没有替代方法)。我想要呈现的View部分无法预先确定,这意味着我无法将小部分的View层次结构设置为它自己的UIView(因此也是CALayer)。我的想法...我有一个想法,但如果我想成功,我需要一些指导。如果我在UIView(或CALayer)上创建一个类别,它添加了如下方法:[UIViewrenderSubframe:(CGFrame)frame];如何?好吧,我在想,

iphone - CALayer drawInContext 无法在视网膜显示器上绘制 1px 线

我想用2种不同颜色的1px线条绘制双色线条。我有很多代码,所以我在尝试解释后将其放入。如果我使用uiviewdrawRect方法,当我关闭抗锯齿时它工作正常,但是当我使用图层的drawLayerInContext时,它要么显示一条纯线,要么显示2条纯线关闭抗锯齿的2px或打开抗锯齿的两条2px半透明线。我设法获得了与UIView的drawRect方法类似的行为,方法是创建一个带有自定义上下文的图像,我可以在其中指定比例:UIGraphicsBeginImageContextWithOptions([selfbounds].size,NO,0.f);//0.fforscalemeans"

iphone - iOS背景图UIVIew和CALayer的关系

试图理解UIView和CALayer之间的关系。我阅读了Apple文档,但它没有详细描述两者之间的关系。为什么当我添加背景图片以查看“customViewController.view”时,我得到了不需要的黑色图片。当我将背景图像添加到图层“customViewController.view.layer”时,图像的黑色区域消失了(这正是我想要的),但背景图像倒置了。这是为什么?如果我要添加标签/View/按钮/等等。对于View,图层的背景图像是否会阻挡它们,因为CAlayer由UIView支持?当您设置UIView的背景颜色时,它会自动设置关联图层的背景颜色吗?-(void)view

ios - 隐藏 CALayer(没有动画)的最佳方法是什么?

我有许多全屏CALayer作为单个UIView的一部分。根据用户与View的交互方式,我需要显示一层并隐藏所有其他层。我目前正在通过改变不透明度来做到这一点,即要隐藏的图层:[layersetOpacity:0];要显示的图层:[layersetOpacity:1];出于某种我不太明白的原因,这似乎在屏幕上产生了闪烁效果。部分是为了避免这种情况,但也因为我的印象是不透明度的变化会影响性能,我想知道改变不透明度是否实际上是隐藏和/或显示CALayers的最佳方式,例如我应该考虑更改zPosition还是更改其位置,以便它不再出现在屏幕上。顺便说一下,我不想为过渡设置动画。在此先感谢您的任

ios - 动画期间无法获取 CALayer 的当前位置

我正在尝试实现一个动画,当你按住一个按钮时,它会向下移动一个block,当你松开它时,它会将它动画回原来的位置,但我无法获得动画block的当前位置否有什么关系。这是我的代码:-(IBAction)moveDown:(id)sender{CGRectposition=[[container.layerpresentationLayer]frame];[movePathmoveToPoint:CGPointMake(container.frame.origin.x,position.y)];[movePathaddLineToPoint:CGPointMake(container.fra

ios - 如何在其蒙版周围绘制 CALayer 边框?

所以,我有一个CALayer,它有一个mask,我想在这个图层的mask周围添加边框。例如,我已经为图层设置了三角形蒙版,我想在该图层周围设置边框。谁能帮我解决这个问题? 最佳答案 swift4classCustomView:UIView{overridefuncdraw(_rect:CGRect){super.draw(rect)self.backgroundColor=UIColor.black//setuppathformaskandborderlethalfHeight=self.bounds.height*0.5letma

iphone - CALayer shouldRasterize 传播到所有子层吗?

如果我在CALayer上设置shouldRasterize=YES,如果我希望整个层次结构被展平以获得更好的动画性能,我是否也必须在每个子层上设置它?我问是因为当我在我的根层上设置shouldRasterize=YES并在Instruments中启用“颜色混合层”时,所有子层仍然存在并标记为混合。它没有压扁任何东西。 最佳答案 设置shouldRasterize并不像您想象的那样。为了合成父View的外观,光栅化与否,它必须检查subview以查看它们是不透明还是透明的。当子对象不透明时,它们不需要混合。当它们是透明的时,View需

ios - 用另一个 CALayer 屏蔽一个 CALayer

我正在尝试使用CALayers制作一个donut形状。一个CALayer将是一个大圆圈,另一个将是一个位于其中心的小圆圈,将其遮盖。大圆圈显示正常,但每当我调用circle.mask=circleMask;时,View就会显示为空。这是我的代码:AriDonut.h#import@interfaceAriDonut:UIView-(id)initWithRadius:(float)radius;@endAriDonut.m#import"AriDonut.h"#import@implementationAriDonut-(id)initWithRadius:(float)radius{