我正在尝试学习iOS/iPhone的核心动画.我的根层包含很多子层(sprite),当它们被移除时它们会旋转...
我的计划是添加旋转动画,然后在调用animationDidStop时删除精灵.问题是sprite图层不是animationDidStop的参数!
从animationDidStop中找到特定sprite图层的最佳方法是什么?是否有一种更好的方法可以在精灵被移除时使其旋转?(理想情况下,我想使用kCAOnOrderOut,但我无法使其工作)
-(void) eraseSprite:(CALayer*)spriteLayer {
CABasicAnimation* animSpin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animSpin.toValue = [NSNumber numberWithFloat:2*M_PI];
animSpin.duration = 1;
animSpin.delegate = self;
[spriteLayer addAnimation:animSpin forKey:@"eraseAnimation"];
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
// TODO check if it is an eraseAnimation
// and find the spriteLayer
CALayer* spriteLayer = ??????
[spriteLayer removeFromSuperlayer];
}
Run Code Online (Sandbox Code Playgroud) 我使用以下代码绘制子图像
UIImage* subIm = getSubImage( large, rect );
[subIm drawInRect:self.bounds];
Run Code Online (Sandbox Code Playgroud)
其中getSubImage定义如下
UIImage* getSubImage(UIImage* uim, CGRect rc){
CGImageRef imref = CGImageCreateWithImageInRect(uim.CGImage, rc);
UIImage* sub = [UIImage imageWithCGImage:imref];
CGImageRelease(imref);
NSLog(@"subimage retainCount=%d", [sub retainCount]); // is 1
return sub;
}//getSubImage
Run Code Online (Sandbox Code Playgroud)
代码是否正确?
"CGImageRelease"imref安全吗?
有子"CGImageRetained"imref?
我应该释放subIm(如果我这样做,我会收到错误)吗?
subIm是否包含在自动释放池中,如果是,我怎么知道这个?
通常,可以检查自动释放池中是否包含对象(用于调试目的)?
以下abs函数有时会返回-0 (减零)
inline float abs(float a){
return( a>=0.0f? a :-a);
}
Run Code Online (Sandbox Code Playgroud)
更具体地说,该语句 sprintf(str, "%.2f", abs(-0.00f) );产生"-0.00",这很烦人,因为字符串显示给用户.
题:
1)为什么会产生-0?
2)如何解决?
PS:我正在使用xcode(目标)c编译器.
我正在使用sqlite3。我的测试表包含两行(请参见屏幕转储图像),但是我无法使用
SELECT * FROM test WHERE word =“ id”
声明。sqlite为什么找不到该行?
(我认为问题在于一个属性也称为“ id”,因为我发现,如果该属性id2改为命名,则select语句将起作用。)

我正在尝试学习 iPhone 编程,并且刚刚将 xcode 升级到版本 3.2.4(以及 iOS 4.1)。
当我创建一个新项目时,我收到如下所示的“内部错误”。怎么了?(顺便说一句,我在控制台中看不到任何消息)
Internal Error
File: /SourceCache/DevToolsBase/DevToolsBase-1705/pbxcore/Target.subproj/PBXTarget.m
Line: 1603
Object: <PBXNativeTarget:0x20088e7c0>
Method: createPropertyExpansionContextWithBuildState:
Platform failed to completely load. Examine Console Log for error messages.
Run Code Online (Sandbox Code Playgroud) 我已经编写了一个通用的iOS应用程序,可以在我的iPhone和iPad上正常运行,但不是在我的旧iPod touch上.X代码甚至不传输二进制文件.它只是说
在devicename上完成运行程序名
部署目标是4.2.(iPod touch运行4.2.1,它有2.1 GB的可用空间).
我该如何解决这个问题?
我正在制作一个iOS应用程序。我有几个CALayer对象,最终将通过(缩小)动画删除。当动画完成并被调用时,我想从超级视图中删除该对象并删除它。animationDidStop:finishedCALayer
CALayer物体放进
animationDidStop:finished去呢?我会猜到
CAanimation-object有一个指向该层的指针,但是我在文档中找不到它。 如何在siri遥控器的触摸板上检测到"点按",而不仅仅是点按?
编辑:我的主要问题是我的视图有一个接收该事件的UIButton.
我正在构建一个卡片游戏(用于tvos),用户应该能够从棋盘上移除卡片.在游戏结束时,只有几张牌可以留在棋盘上,并且它们可以例如被安排为下图中的按钮.
如何让用户将焦点从说按钮1移动到按钮0或2?
在SO的类似问题的未被接受的答案中,有人建议应该使用UIFocusGuide.我不认为答案适用于我的问题,因为在这种方法中,必须preferredFocusedView提前告知焦点指南(例如在用户在siri-remote中滑动之前)!在我的情况下,首选的下一个焦点取决于滑动方向,例如 focusHeading.
在我的游乐场,Calendar.current.firstWeekday == 1,我将其解释为
"星期一是我住的一周的第一天(瑞典)"
但是当我运行模拟器时,Calendar.current.firstWeekday == 2,我不明白为什么!(在模拟器的设置中,我将区域设置为"瑞典").
let c = Calendar.current
print(c) // prints "gregorian"
let first = Calendar.current.firstWeekday // this is 2 !!!
Run Code Online (Sandbox Code Playgroud)
问题:为什么Calendar.current.firstWeekday == 2我该如何解决这个问题?
ios ×4
iphone ×4
animation ×2
swift ×2
tvos ×2
autorelease ×1
c ×1
caanimation ×1
calayer ×1
cgimage ×1
focus-engine ×1
objective-c ×1
siri-remote ×1
sql ×1
sqlite ×1
xcode ×1