私の iPhone アプリでは、別の種類のトランジションを実装する必要があります。
あれは
現在のビューから開いた次のビュー、
それはドットのように統計し、ドットは円のようにゆっくりと拡大し、円の部分では次のビューが部分的に表示され、最後に円が完全に拡大して次のビューが完全に表示されます。
CATransitions のような多くのトランジションやココア コントローラーのアニメーションを検索しましたが、このタイプのトランジションは見つかりませんでした。
私の iPhone アプリでは、別の種類のトランジションを実装する必要があります。
あれは
現在のビューから開いた次のビュー、
それはドットのように統計し、ドットは円のようにゆっくりと拡大し、円の部分では次のビューが部分的に表示され、最後に円が完全に拡大して次のビューが完全に表示されます。
CATransitions のような多くのトランジションやココア コントローラーのアニメーションを検索しましたが、このタイプのトランジションは見つかりませんでした。
最初のビューで開く:
//アノテーションの委任メソッドが選択されました - (void)tapOnAnnotation:(RMAnnotation *)annotation onMap:(RMMapView *)map; { //GMS マーカーのタッチ ポイントを取得して円として設定します。x = マーカーポイント.x; y = マーカーポイント.y;
circleSize = 10;
radiusChange = 0;
//Populate Same Values to next view to close
VenueScreen.x = x;
VenueScreen.y = y;
VenueScreen.view.hidden = YES;
timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(openVenueScreen) userInfo:nil repeats:YES];
VenueScreen.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:VenueScreen.view];
}
//Circular transition to open Next view
-(void)openVenueScreen
{
VenueScreen.view.hidden = NO;
VenueScreen.view.userInteractionEnabled = NO;
VenueScreen.view.alpha = 0.9;
self.view.userInteractionEnabled = NO;
int rChange = 0; // Its doing proper masking while changing this value
int radius = circleSize-rChange;
CAShapeLayer *circleShapeLayer = [CAShapeLayer layer];
// Make a circular shape
circleShapeLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(x+radiusChange, y+radiusChange, 2.0*radius, 2.0*radius)
cornerRadius:radius].CGPath;
radiusChange = radiusChange-10;
// Configure the apperence of the circle
[[VenueScreen.view layer] setMask:circleShapeLayer];
//Start Transition
circleSize = circleSize+10;
if (circleSize > 480)
{
[[VenueScreen.view layer] setMask:nil];
[timer invalidate]; //Stop titmer
VenueScreen.view.userInteractionEnabled = YES;
self.view.userInteractionEnabled = YES;
VenueScreen.view.alpha = 1;
//Populate to next view to close
VenueScreen.radiusChange = radiusChange;
}
}
次のビューで閉じる:
//Close button Action
-(IBAction)DismissVenueScreen:(id)sender;
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(dismissVenueScreen) userInfo:nil repeats:YES];
NSLog(@"close button clciked");
}
//Circular trasition to Close window
-(void)dismissVenueScreen
{
int rChange = 0; // Its doing proper masking while changing this value
int radius = circleSize-rChange;
CAShapeLayer *circleShapeLayer = [CAShapeLayer layer];
// Make a circular shape
circleShapeLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(x+radiusChange,y+radiusChange, 2.0*radius, 2.0*radius)
cornerRadius:radius].CGPath;
// Configure the apperence of the circle
[[self.view layer] setMask:circleShapeLayer];
self.view.layer.masksToBounds = YES;
radiusChange = radiusChange+10;
circleSize = circleSize-10;
if (circleSize <= 0)
{
[timer invalidate]; //Stop titmer
[[self.view layer] setMask:nil];
[self.view removeFromSuperview];
circleSize = 480;
}
}