草庐IT

ios - 如何绘制 UIView 的一部分,因为它在 UICollectionView 中变得可见?

在Android上,我在水平滚动列表上有可能具有较大宽度的项目View。当View的一部分在列表中可见时,View加载并绘制block“图像”。这是一种优化,可避免一次绘制所有图像,因为这会造成浪费和缓慢。绘制的内容本质上是一个音频波形。按照事情需要的方式去做我不能将block拆分为列表中的单个View项。由于android绘图架构的工作方式,此策略非常有效。现在我正尝试在iOS中使用类似的模式,但我遇到了一些麻烦,我不太确定如何提出解决方案。在iOS中,我正在使用UICollectionView来绘制大宽度的单元格,我们需要同样的优化来加载和仅绘制可见block。解决方案1:检查UI

ios - 动画 CATextLayer 的 foregroundColor 属性

我想为iPhone上的CATextLayer的文本(foregroundColor)颜色的变化设置动画。根据文档,该属性的隐式动画在OSX10.6上不可用,但没有提及iOS。因此,我只是假设动画必须是明确的才能在iOS上运行。我已经使用+(class)layerClass更改了支持层类,并在UIViewinit方法中为该属性设置了一个初始值。文本以及我应用的所有属性(阴影、字体等)显示得很好,但动画没有任何影响。下面是我的动画方法,我从KVO观察方法调用它,以便在观察到的属性发生变化时View提醒用户。-(void)animateTextChange{animation=[CABasi

ios - 将 Box2D 物理应用于 UIView 与 CALayer

我使用这个优秀的教程启动了一个我正在从事的涉及物理学的小项目:http://www.cocoanetics.com/2010/05/physics-101-uikit-app-with-box2d-for-gravity/基本上,它会创建一个世界并将B2D的物理原理应用于您拥有的任何View。非常简单而且有效。但是,我尝试通过使用CALayers来应用相同的逻辑,即我以编程方式创建图层,将它们添加到主view.layer并尝试为它们设置动画。创建层的示例代码:CALayer*layer=[CALayerlayer];layer.backgroundColor=[UIColorblack

ios - 向 CALayer 添加半透明蒙版?

我试图使UIImageView的周围区域变暗,并单独留下一部分(我用蒙版定义的部分)。现在我正在定义我的mask并设置我的imageView.layer.mask,但是它没有使图像的其余部分变暗,而是完全将其移除。我想要的效果类型示例:我得到的示例:引用文档提到mask使用其图层的alpha,因此我尝试操纵mask的不透明度。然而,这似乎只影响了我想单独留下的部分的不透明度,而图像的其余部分仍然被完全切掉。谁能指出我做错了什么?谢谢。这是我的代码:CAShapeLayer*mask=[CAShapeLayerlayer];GMutablePathRefpath=CGPathCreate

ios - 无法让 CALayer 更新其 drawLayer : DURING a bounds animation

我正在尝试为自定义UIView的边界设置动画,同时保持其图层与其父View的大小相同。为此,我试图在其父View旁边为图层边界设置动画。我需要图层调用drawLayer:withContext作为其动画,这样我的自定义绘图将随着边界正确更改大小。drawLayer在我开始动画之前被正确调用并正确绘制。但是我无法让图层在边界动画的每个步骤上调用其drawLayer方法。相反,它只是调用一次,立即跳到动画最后一帧的“结束边界”。//self.bgisapropertypointingtomycustomUIViewself.bg.layer.needsDisplayOnBoundsChan

ios - 如何为 CAlayer 的边界设置动画以逐渐显示图像?

出于某些原因,我试图避免使用CAScrollLayer来执行此操作。我想要的效果是逐渐显示(从底部到顶部)CALayer的内容(我之前加载的png)。所以我考虑这样做:layer.anchorPoint=CGPointMake(.5,1);CABasicAnimation*a=[CABasicAnimationanimationWithKeyPath:@"bounds.size.height"];a.timingFunction=[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];a.f

ios - 从当前 CAAnimation 的状态开始新的 CAAnimation

我正在使用一对CALayer作为图像mask,让我能够以设定的速度制作灯泡填充或排空的动画,同时还可以跟随当前的触摸位置。也就是说,一个mask会随着触摸而跳动,而另一个会滑动到该位置。由于我使用了显式动画,因此在添加动画时我不得不设置mask滑动mask的位置。这意味着,如果我开始填充,然后在填充完成之前开始清空,空将从完成的填充位置开始(反之亦然)。有没有办法获取动画的位置,设置动画每一步的位置,或者让新动画从事件动画的当前状态开始?处理动画的代码如下:-(void)masksFillTo:(CGFloat)height{//Clamptheheightwefilltoinside

ios - 使用平移手势移动 CALayer 时延迟

我使用平移手势在CALayer中移动图像。我遇到的问题是图像移动时似乎有一点延迟,并且不会“卡在”我的手指上。这是我如何移动图层的实际片段(facePic是CALayer):CGPointtranslation=[touchelocationInView:self.view];self.facePic.frame=CGRectMake(translation.x-self.facePic.frame.size.width/2,translation.y-self.facePic.frame.size.height/2,self.facePic.frame.size.width,self

ios - 使用可调整大小的 UIImage 蒙版屏蔽任意大小的 UIImageView

当前代码:self.backgroundImageView.image=[self.messageimageOfSize:self.message.size];//Randomimage,randomsizeUIImage*rightBubbleBackground=[[UIImageimageNamed:@"BubbleRight"]resizableImageWithCapInsets:BubbleRightCapInsetsresizingMode:UIImageResizingModeStretch];CALayer*mask=[CALayerlayer];mask.conte

ios - CATransaction 设置动画持续时间不起作用

我正在学习CoreAnimation并尝试示例。当我使用下面的代码时,动画持续时间有效@implementationViewController-(void)viewDidLoad{[superviewDidLoad];//Modifyingbaselayerself.view.layer.backgroundColor=[UIColororangeColor].CGColor;self.view.layer.cornerRadius=20.0;self.view.layer.frame=CGRectInset(self.view.layer.frame,20,20);//Adding