我遇到了一个问题,我有一系列重叠的CATransition/CAAnimation序列,所有这些都是我需要在动画停止时执行自定义操作,但我只需要一个dynamicDidStop的委托处理程序.
但是,我遇到了一个问题,似乎没有办法在animationDidStop委托中唯一标识每个CATransition/CAAnimation.
我通过作为CAAnimation的一部分公开的键/值系统解决了这个问题.
当您启动动画时,请使用CATransition/CAAnimation上的setValue方法设置在animationDidStop触发时使用的标识符和值:
-(void)volumeControlFadeToOrange
{
CATransition* volumeControlAnimation = [CATransition animation];
[volumeControlAnimation setType:kCATransitionFade];
[volumeControlAnimation setSubtype:kCATransitionFromTop];
[volumeControlAnimation setDelegate:self];
[volumeControlLevel setBackgroundImage:[UIImage imageNamed:@"SpecialVolume1.png"] forState:UIControlStateNormal];
volumeControlLevel.enabled = true;
[volumeControlAnimation setDuration:0.7];
[volumeControlAnimation setValue:@"Special1" forKey:@"MyAnimationType"];
[[volumeControlLevel layer] addAnimation:volumeControlAnimation forKey:nil];
}
- (void)throbUp
{
doThrobUp = true;
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[animation setSubtype:kCATransitionFromTop];
[animation setDelegate:self];
[hearingAidHalo setBackgroundImage:[UIImage imageNamed:@"m13_grayglow.png"] forState:UIControlStateNormal];
[animation setDuration:2.0];
[animation setValue:@"Throb" forKey:@"MyAnimationType"];
[[hearingAidHalo layer] addAnimation:animation forKey:nil];
}
Run Code Online (Sandbox Code Playgroud)
在animationDidStop委托中:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
NSString* value = [theAnimation valueForKey:@"MyAnimationType"];
if ([value isEqualToString:@"Throb"])
{
//... …Run Code Online (Sandbox Code Playgroud) 有没有办法在代码中更改指向info.plist中的47x47 PNG,用于iPhone跳板图标?
我知道我可以通过每种语言更改的info.plist添加翻译并更改iPhone支持的每种语言的跳板图标,但我想根据应用程序中的用户偏好更改我的iPhone应用程序的跳板图标.
有任何想法吗?
我没有试过这个,但是可以在应用程序包中将文件复制到另一个文件吗?我可以发送指向"base.png"的info.plist,然后用代码中的我的应用程序将"base.png"替换为另一个PNG I包吗?
谢谢.
--Batgar
我正在努力使用TFS作为iPhone开发的源代码库.
我的老板永远不会让我使用Subversion(或者上帝禁止Perforce),所以我坚持使用TFS源代码控制.
解决方案是去购买将Mac连接到TFS的工具,我不打算在这里做广告,但Mac OS X的Teamprise Client Suite是Mac OS X和TFS之间的桥梁.
对于标准签入和开发人员工作流程,Xcode和TFS之间没有集成.您必须通过Teamprise Explorer客户端手动完成所有操作.
对于构建,事实证明Automator和Teamprise命令行客户端可以解决问题.
那里有一些Xcode到TFS桥吗?您使用什么源代码控制系统进行iPhone开发?
对我而言,关键是嵌入在Automator工作流程中的以下bash脚本.
%1 =要执行代码拉取的本地文件夹.%2 =项目名称来执行拉动.
此脚本假定Teamprise命令行客户端已安装到〜/ Teamprise
PATH="$PATH:~/Teamprise:~/Teamprise/lib"
cd "$1"
mkdir "$1/logs"
tf workspace -delete BuildScript -server:http://TFSServer -login:uname@domain,password >> $1/logs/wsdelete1.log
tf workspace -new BuildScript -server:http://TFSServer -login:uname@domain,password >> $1/logs/wscreate.log
tf workfold -map "$/TFSRoot" . -workspace:BuildScript -server:http://TFSServer -login:uname@domain,password >> $1/logs/workfold.log
tf get "$/TFSRoot/$2" -all -recursive -server:http://TFSServer -login:uname@domain,password >> $1/logs/get.log
tf workspace -delete BuildScript -server:http://TFSServer -login:uname@domain,password >> $1/logs/wsdelete2.log
#pump the tfs landing folder to the next step in the Automator script. …Run Code Online (Sandbox Code Playgroud)