CATransition animation

iOSシミュレータのスクリーンショット 2013.05.11 18.16.19

iOSシミュレータのスクリーンショット 2013.05.11 18.16.19 iOSシミュレータのスクリーンショット 2013.05.11 18.32.24

画面がめくれる効果を実装してみた。
iPhoneのマップに実装してあるのと比較してみる。
マップのはメニューが多い分めくる量が大きいけど、なんかな〜。

コードはこんな感じ

[code language=”objc”]

上へめくる時
-(IBAction)buttonForCurlUp:(id)sender
{
CATransition *animation = [CATransition animation];
[animation setDelegate:self]; [animation setDuration:1.00];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];

animation.type = @"pageCurl";
animation.fillMode = kCAFillModeForwards;
animation.endProgress = 0.50;
[animation setRemovedOnCompletion:NO];
[[self view] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self view] layer] addAnimation:animation forKey:@"pageCurlAnimation"];
}

元に戻す時
-(IBAction)buttonForCurlDown:(id)sender
{
CATransition *animation = [CATransition animation];
[animation setDelegate:self]; [animation setDuration:1.00];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];

animation.type = @"pageUnCurl";
animation.fillMode = kCAFillModeBackwards;
animation.startProgress = 0.50;
[animation setRemovedOnCompletion:NO];
[[self view] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[[[self view] layer] addAnimation:animation forKey:@"pageCurlAnimation"];
}
[/code]

core data

1

1

ひさびさにCoreDataの自動マイグレーション作業をしたところ、ハマったのでメモ。
問題があるとCan’t merge models with two different entities named ‘EntityName””; とエラー

1, CoreData定義ファイルを選択したあと、Editor -> Add Model Version を選択
元が「データベース名.xcdatamodeld」の場合、「データベース名 2.xcdatamodeld」が出来ている。

2, 「データベース名 2.xcdatamodeld」にAttributesを追加

3, インスペクタのVersioned Core Data Model の Correntを確認 「データベース名」が「データベース名2」になってるはず

4, Delegate.mに以下の箇所について追加、変更
4,1 – (NSManagedObjectModel *)managedObjectModel

[sourcecode]
– (NSManagedObjectModel *)managedObjectModel
{
if (managedObjectModel != nil)
{
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"データベース名" ofType:@"momd"];
NSURL *url = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];
return managedObjectModel;
}
[/sourcecode]

4,2 – (NSPersistentStoreCoordinator *)persistentStoreCoordinator
[sourcecode]
– (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (persistentStoreCoordinator != nil)
{
return persistentStoreCoordinator;
}
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"データベース名.sqlite"]];

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

// if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil
URL:storeUrl options:options error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator;
}
[/sourcecode]