2016-11-26 13 views
0

次のコードを使用してビューをアニメーション化します。私は画面を画面の中央から上に向けて見ることを期待しています。UIViewの遷移が期待通りではありません

ViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildViewController"]; 

    [UIView transitionWithView:viewController.view 
         duration:0.5 
         options:UIViewAnimationOptionTransitionNone 
        animations:^{ 
         viewController.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2 , 18, 36); 
           } 
        completion:nil]; 

    [viewController willMoveToParentViewController:self]; 
    [self.view addSubview:viewController.view]; 
    [self addChildViewController:viewController]; 
    [viewController didMoveToParentViewController:self]; 

このコードは動作しますが、ビューは、上部の中心点に由来しなければならないが、それは上部の左点由来します。なぜそうなのか?

答えて

1

、上から落下し、これを試してみてください:

#import "ViewController.h" 
#import "ViewController2.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self initUI]; 
} 

#pragma mark - init 

- (void)initUI { 

    self.view.backgroundColor = [UIColor whiteColor]; 



    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    ViewController2 *vc2 = [sb instantiateViewControllerWithIdentifier:@"ViewController2"]; 
    vc2.view.frame = CGRectMake(0, 0, 100, 100); 
    vc2.view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2.0, 0); 

    [UIView transitionWithView:vc2.view 
        duration:0.5 
        options:UIViewAnimationOptionTransitionNone 
       animations:^{ 
        //vc2.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2 , 18, 36); 
        vc2.view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2); 
       } 
       completion:nil]; 

    [vc2 willMoveToParentViewController:self]; 
    [self.view addSubview:vc2.view]; 
    [self addChildViewController:vc2]; 
    [vc2 didMoveToParentViewController:self]; 
} 


@end 
1

あなたvc1

ViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildViewController"]; 

    CGRect newFrame = viewController.view.frame; 
    newFrame.origin.y = -[UIScreen mainScreen].bounds.size.height; 
    viewController.view.frame = newFrame; 

    [UIView transitionWithView:viewController.view 
         duration:0.5 
         options:UIViewAnimationOptionTransitionNone 
        animations:^{ 
         viewController.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2 , 18, 36); 
        } 
        completion:nil]; 

    [viewController willMoveToParentViewController:self]; 
    [self.view addSubview:viewController.view]; 
    [self addChildViewController:viewController]; 
    [viewController didMoveToParentViewController:self]; 
関連する問題