草庐IT

objective-c - CGAffineTransformMakeRotation CALayer

我创建了一个图层并为其设置了一个框架。然后我对其应用CGAffineTransformMakeRotation。这样做的结果是挤压对象,因为框架保持不变。如何旋转图层并重置框架,使其看起来不会被挤压。 最佳答案 我解决了:我没有设置框架,而是设置了中心(位置)和边界。这样,问题奇迹般地消失了。 关于objective-c-CGAffineTransformMakeRotationCALayer,我们在StackOverflow上找到一个类似的问题: https

ios - CALayer 的图像不显示

我正在尝试使用CALayer来显示图像,但图像没有显示出来。我已验证“图像”不为零,image.size正确,并且layer.contents是有效的CABackingStore。-(void)viewDidLoad{[superviewDidLoad];layer=[[CALayeralloc]init];[self.view.layeraddSublayer:layer];UIImage*image=[UIImageimageNamed:@"download.jpeg"];layer.bounds=CGRectMake(0,0,image.size.width,image.size

ios - 为 CALayer 的蒙版制作动画

目标:我正在绘制一个具有渐变的自定义形状。我还想通过让它从左到右绘制来动画这个形状的绘图。问题:下面的代码适用于iPad模拟器,但不适用于我运行iOS7的iPad4。有谁知道如何在设备上运行它?是否有不同的方法来实现相同的结果?我的代码说明:我的代码使用3个CALayers(仅在模拟器上)有效。gradientLayer保存我的渐变。shapeMaskLayer包含我的自定义形状。animationMaskLayer动画它的路径以模拟从左到右的绘图animationMaskLayer--masks-->shapeMaskLayer--masks-->gradientLayer然后我对a

objective-c - 不能给 View 添加阴影,CALayer

我正在通过以下操作为我的View添加阴影-(void)viewDidLoad{[superviewDidLoad];self.view.layer.shadowColor=[UIColorblackColor].CGColor;self.view.layer.shadowOffset=CGSizeMake(0.0f,0.0f);self.view.layer.shadowOpacity=1.0f;self.view.layer.shadowRadius=4.0f;self.view.layer.shadowPath=[UIBezierPathbezierPathWithRect:sel

iphone - CALayer 的 display/drawRect 方法究竟应该发生什么?

如果有的话,这些方法中的哪一个适合用于:更改CATextLayer的文本将不同的图像加载到CAImageLayer告诉子层自己更新 最佳答案 伙计,我可能喝醉了......但是CAlayers中没有drawRect方法我认为您可以使用drawInContext:来实际(吞咽)绘制CALayers,但自二战以来没有人能做到这一点。关于显示,您不需要调用它,它基本上会更新您使用.contents设置的内容。我只是使用.contents这样的东西......[self.viewsetLayer:rearLayer];[self.views

ios - 从后台线程更改 CALayer 的属性是否安全?

我想做一个响应设备运动的动画,我希望即使UI线程暂时很忙,它也能保持流畅。动画包括更改CALayer的贝塞尔曲线路径。我试过从辅助线程执行此操作,但偶尔会在主线程有垃圾堆栈的地方挂起。我正在做的事情是完全没有希望的吗?这是我在线程中所做的:[CATransactionlock];[CATransactionsetValue:(id)kCFBooleanTrueforKey:kCATransactionDisableActions];[CATransactionbegin];myLayer.path=[UIBezierPathbezierPathWithOvalInRect:theRec

ios - CALayer mask - 合并两层

在我的应用程序中,我有一个View,我希望它在左侧和右侧有一个小的透明渐变。我可以很容易地创建左或右渐变,但我不知道如何组合它们:CAGradientLayer*rightLayer=[CAGradientLayerlayer];rightLayer.frame=self.bounds;rightLayer.colors=[NSArrayarrayWithObjects:(id)[UIColorwhiteColor].CGColor,(id)[UIColorclearColor].CGColor,nil];rightLayer.startPoint=CGPointMake(0.8f,1

ios - 在缩放/变换时强制重绘 UIView 或 CALayer

假设您有一个UIView或一个CALayer可以进行自己的(矢量)绘图,并且您希望它在任何尺寸下都保持清晰,即使在缩放View时也是如此或层。当使用transform属性缩放时,如何让它重绘?强制更改bounds而不是使用transform的唯一方法是什么?或者在每一步都调用setNeedsDisplay?为什么UIImageView的行为似乎有所不同(即它似乎总是适本地缩放其源图像,即使使用transform和bounds不变)?是因为它是唯一直接设置底层CALayer的content属性的情况吗? 最佳答案 如果CALayer上

ios - 如何绘制CALayer 的线路径模拟橡皮擦效果?

我想用触摸事件模拟橡皮擦效果,以显示在某些东西后面的图像在顶部,例如灰色;类似的东西:我找了很久的解决方案,但我做不好。以下是我的自定义View代码:自定义View.m:-(id)initWithCoder:(NSCoder*)aDecoder{if(self=[superinitWithCoder:aDecoder]){[selfsetup];}returnself;}-(id)initWithFrame:(CGRect)frame{self=[superinitWithFrame:frame];if(self){[selfsetup];}returnself;}-(void)set

iOS - CALayer 和手势/滑动识别器

我在我的View中添加了一个图层来创建渐变背景颜色,但我需要在我的View中使用UISwipeGestureRecognizer。问题是现在有了图层,滑动识别器就不起作用了!我能怎么做??我可以向图层添加滑动识别器吗?谢谢。 最佳答案 CALayer及其子项不支持UIGestureRecognizer,只有UIView支持。这意味着您必须将手势识别器附加到某些封闭View并调用-[CALayerhitTest:],或-[CALayerpointInside:]查看特定触摸或事件击中了哪个层。