2016-11-26 40 views
0

Im使用下面的代碼來動畫視圖。我期待視圖從屏幕頂部到中心。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

在你vc1

#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

試試這個從頂部回落,

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];