我正在使用以下代码为 View 设置动画。我希望 View 从顶部落到屏幕中央。
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];
此代码有效,但 View 必须从顶部的中心点开始,但它从顶部的左侧点开始。为什么会这样?
最佳答案
在你的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
关于ios - UIView 过渡不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815376/