美文网首页
iOS transitionFromView 翻转View

iOS transitionFromView 翻转View

作者: 不会写代码的尬先生 | 来源:发表于2018-09-11 16:27 被阅读0次
dsdsdsdezgif.com-resize.gif

用了UIView分类UIViewAnimationWithBlocks里的类方法:

+ (void)transitionFromView:(UIView *)fromView //第一个view
                                   toView:(UIView *)toView //第二个view
                                 duration:(NSTimeInterval)duration //翻转时间
                                   options:(UIViewAnimationOptions)options//翻转方向
                             completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // toView added to fromView.superview, fromView removed from its superview

需要注意的是fromView和toView需要添加到同一个父view上,这样才会让父view翻转,不然你整个window都在翻转别怪我🤣

- (UIView *)firstView
{
    if (!_firstView)
    {
        _firstView = [UIView new];
        _firstView.frame = self.bounds;
        
        UIImageView *imgView = [UIImageView new];
        imgView.frame = _firstView.bounds;
        imgView.clipsToBounds = YES;
        imgView.contentMode = UIViewContentModeScaleAspectFill;
        imgView.image = [UIImage imageNamed:@"car1"];
        [_firstView addSubview:imgView];
        
        UILabel *label = [UILabel new];
        label.frame = CGRectMake(0, self.frame.size.height - 50, self.frame.size.width, 50);
        label.backgroundColor = [UIColor redColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.textColor = [UIColor whiteColor];
        label.text = @"我是正面";
        [_firstView addSubview:label];
        [self addSubview:_firstView];
        _firstView.layer.cornerRadius = 5;
        _firstView.clipsToBounds = YES;
    }
    return _firstView;
}

- (SecondView *)secondView
{
    if (!_secondView)
    {
        _secondView = [[SecondView alloc] initWithFrame:self.bounds];
        _secondView.layer.cornerRadius = 5;
        _secondView.clipsToBounds = YES;
    }
    return _secondView;
}

第一个view加到父view上,第二个只初始化,不添加到父view

- (void)setTitle:(NSString *)title
{
    _title = title;
    
    if ([title isEqualToString:@"反面"])
    {
        if (self.click)
        {
            self.click(@"正面");
        }
        [UIView transitionFromView:self.firstView toView:self.secondView duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
            NSLog(@"翻转到了正面");
        }];
    }else
    {
        if (self.click)
        {
            self.click(@"反面");
        }
        [UIView transitionFromView:self.secondView toView:self.firstView duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
            NSLog(@"翻转到了反面");
        }];
    }
}

FlipAnimationView

以上。

相关文章

网友评论

      本文标题:iOS transitionFromView 翻转View

      本文链接:https://www.haomeiwen.com/subject/qrmugftx.html