我正在描述一个问题,我花了很长时间来学习答案.
" GenericKeychain "示例是在init中使用accessGroup时提供在应用程序之间共享钥匙串数据的包装器的良好开端.
但是,在我的应用程序中实现这一点产生了一个模糊的错误代码(永远定位)-25243,这意味着:没有访问控制.
我在iPad上运行Apple的示例应用程序(GenericKeychain)只是为了得到同样的错误.咦?
Apple的文档是否无法实现完成此任务所需的内容?
我花了太多时间试图解决这个问题,根本无法找到可行的解决方案.
情况: 1.手机上会显示"某事"的图片.2.将半透明(例如蓝色)层放置在图像的顶部,完全覆盖它.3.该层中的"洞"存在于该层的该部分是完全透明且可移动的位置.
一个示例可以是缩放效果,您可以在图像周围移动此"洞".在孔内,您可以正常看到图像,而在外面则被半透明层覆盖.注意:我在cocos2d层中实现它,其中图像由CCSprite表示.但是,如果没有使用cocos,那应该没关系.
问题: 我尝试使用CAShapeLayer和位图作为掩码,但没有任何工作(请参阅下面的代码片段).使用CAShapeLayer,我为'hole'创建一个UIBezierPath并将其应用于彩色层.但是,只有孔显示颜色,而其余部分是透明的.使用图像,掩码根本不起作用(我不知道为什么).我甚至尝试过掩盖面具,看看是否可行.我也试过交换颜色......从白色到黑色,以清除填充和背景.
如果存在,一个简单的解决方案是反转UIBezierPath的区域.我也试过剪辑,使用路径...但没有运气.
我希望这简直是愚蠢的,我只是在俯视.也许你们其中一个人会看到这个.我不关心的那个动人的部分.我需要先让实际的面具工作.示例代码忽略了iPhone SDK和openGL之间的y轴差异.
CAShapeLayer示例:
CGSize winSize = [[CCDirector sharedDirector] winSize];
UIImage* img = [UIImage imageNamed:@"zebra.png"];
CCSprite* spr = [CCSprite spriteWithCGImage:img.CGImage key:@"img"];
spr.position = ccp( winSize.width / 2, winSize.width / 2 );
[self addSprite:spr];
UIBezierPath* path = [UIBezierPath bezierPathWithRect:rectHole];
CAShapeLayer* maskLayer = [CAShapeLayer layer];
maskLayer.bounds = [spr boundingBox];
maskLayer.position = spr.position;
maskLayer.fillColor = [UIColor whiteColor].CGColor;
maskLayer.backgroundColor = [UIColor clearColor].CGColor;
maskLayer.path = path.CGPath;
CALayer* colorLayer = [CALayer layer];
colorLayer.bounds = [spr boundingBox];
colorLayer.position = maskLayer.position;
[colorLayer …
Run Code Online (Sandbox Code Playgroud)