草庐IT

ios - 添加一个以 UIImageView 为中心的 CALayer 子层

Xcode7.2swift2我正在尝试用我称之为“BlurFilterMask”的图像覆盖图像。这是我用Swift代码动态添加的CALayer,这里是BlurFilterMask:classBlurFilterMask:CALayer{privateletGRADIENT_WIDTH:CGFloat=50.0varorigin:CGPoint=CGPointZero{didSet{setNeedsDisplay()}}vardiameter:CGFloat=50.0{didSet{setNeedsDisplay()}}overrideinit(){super.init()}requir

swift - 使用模块 'CALayer' 作为类型

我想将ITSwitch从obj-c移植到swift。https://github.com/iluuu1994/ITSwitch.git在ITSwitch.m中@property(readonly,strong)CALayer*rootLayer;所以我很快就写了:varrootLayer:CALayer?但是代码给我这个错误:Useofmodule'CALayer'asatype错误是什么意思?我该如何解决这个问题? 最佳答案 如果您在.swift文件的顶部添加importQuartzCore,错误将会消失。错误消息本身似乎有点像错

swift - Xcode 9/iOS 11 "CALayer bounds contains NaN: [nan 0; nan 0]"使用嵌套的 UINavigationController 和 UITabBarController 弹出 View Controller 时

我正在为Xcode9、Swift4、iOS11和iPhoneX更新我的应用程序。它似乎一路相对顺利,但每当我按下后退按钮时,我的应用程序就会崩溃。我可以毫无问题地前进3-4个屏幕,但第一个后退按钮总是使应用程序崩溃。它不需要模拟器作为iPhoneX运行。它似乎没有在堆栈跟踪中深入我的代码,所以在我看来,这是我正在弹出的ViewController的重绘阶段,但我不确定。由于UITableViews和UIViews周围有自定义阴影,所以我做了相当多的自定义绘图,所以我在除以变量的所有位置设置了断点,但没有命中。所以它似乎不是我的代码以零进行计算。***Terminatingappduet

iphone - CATiledLayer 到 CALayer

我有一个带有CATiledLayer支持的View。我想从此CATiledLayerUIView中获取可见图block并将其添加到另一个View作为其CALayer支持,从而在另一个不使用CATiledLayer的UIView中重新创建可见图像。我想这样做的原因是我将使用第二个UIView来掩盖更新CATiledLayer支持的UIView的效果-这当前会在重新加载所有图block时产生闪烁。问题是,我不太确定该怎么做。有什么想法吗? 最佳答案 CATiledLayerisasubclassofCALayerprovidingawa

ios - 由 CALayer.shadow 创建的裁剪阴影

我想在HOLLOWCGPath的OUTSIDE边缘周围添加阴影(这两个词很关键:outside+hollow:))。Apple的阴影实现只允许您进行“填充”阴影。那么……如何剪掉阴影本身的内部部分?如果它是一个渲染调用,我会调用CGContextSetClip*方法将它剪辑到我想要的位置......但我看不出你是怎么做到的,因为它既不是渲染调用,也不是CALayer本身.(我猜这是Apple将其“隐藏”为一组神奇变量的不幸结果?)注意:这仅适用于iOS-IIRC在Mac上您可以直接访问用于创建阴影的滤镜,因此您可以手动创建自己的(任意)阴影。更新:我想出如何裁剪以仅显示阴影的内部部分:

ios - 仅将 CALayer 阴影遮蔽到矩形外部

我如何用阴影遮盖CALayer,使阴影仅在路径之外?我不希望透明View后面有阴影。shadowLayer.shadowOffset=CGSizeMake(x,y);shadowLayer.shadowRadius=radius;shadowLayer.shadowOpacity=opacity;shadowLayer.shadowColor=color.CGColor;shadowLayer.shadowPath=[UIBezierPathbezierPathWithRect:view.bounds].CGPath;谢谢。 最佳答案

ios - 具有极大值的 CALayer zPosition 排序

我遇到了一个问题,当值变大时,CoreAnimation似乎忽略了我的zPosition值。例子这很容易复制。CGFloatlargeZPosition=1000000000;CALayer*topLayer=...CALayer*bottomLayer=...bottomLayer.frame=CGRectOffset(topLayer.frame,50,50);topLayer.zPosition=largeZPosition+1;bottomLayer.zPosition=largeZPosition;//Intentionallysortthesublayersarrayint

objective-c - 检查 CALayer 是否已经添加为子层

我有5个CALayer,每个CALayer都是一个属性。假设我添加了其中的3个作为subview。如果其中一个图层已添加到该图层,我需要能够检查。 最佳答案 您是否尝试过superlayer属性?如果你的层没有添加到任何地方,它应该是nil。 关于objective-c-检查CALayer是否已经添加为子层,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10483333/

ios - 如何使用不同的混合模式渲染 CALayer,比如屏幕或乘法?

我有一个UIImageView并希望它以特定的混合模式显示。我知道iPhone有不同的混合模式,可能可以用很多CG代码来实现……但也许UIImageView的CALayer有一个不错的方法? 最佳答案 将View层的compositingFilter设置为受支持的混合模式字符串。从文档中,层的compositingFilter是ACoreImagefilterusedtocompositethelayerandthecontentbehindit.要获取CoreImage过滤器列表,打印出由kCICategoryCompositeO

ios - 在 UIView 下面添加 CALayer

我有一个UIView(我们称之为superView),其中包含另一个UIView(我们称之为subview)。我想添加一个CALayer以便它在我的父View之上可见,但在我的subview之下。换句话说,我的subview的背景应该覆盖图层。我看过addLayer:below:和其他方法,但我不确定如何使用它。谢谢。编辑:不好的是,我在父View和subview之间有另一个View,我在搞乱它。谢谢大家! 最佳答案 [self.view.layerinsertSublayer:CALayerbelow:subview.layer]