Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 翻转和替换UIView_Ios_Objective C_Swift_Core Animation - Fatal编程技术网

Ios 翻转和替换UIView

Ios 翻转和替换UIView,ios,objective-c,swift,core-animation,Ios,Objective C,Swift,Core Animation,我在视图控制器中添加了一个ui视图,作为子视图,我试图将其翻转并替换为其他视图 [UIView transitionFromView:self.testBlueTicket toView:self.testOrangeTicket duration:2 options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) { }]; 问题是整个viewcontroller正在翻转,而不

我在视图控制器中添加了一个
ui视图
,作为子视图,我试图将其翻转并替换为其他视图

[UIView transitionFromView:self.testBlueTicket toView:self.testOrangeTicket duration:2 options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) {
        
}];
问题是整个viewcontroller正在翻转,而不仅仅是我想要翻转和替换的特定视图


我已经搜索了文档,没有找到任何特定的解决方案。如果您有任何建议,我们将不胜感激。

使用
[UIView transitionFromView…
为superview设置动画

因此,将您的
testBlueTicket
testOrangeTicket
视图嵌入到容器视图中

下面是一个简单的例子:

@interface FlipViewController ()

@property (strong, nonatomic) UIView *testBlueTicket;
@property (strong, nonatomic) UIView *testOrangeTicket;
@property (strong, nonatomic) UIView *containerView;

@end

@implementation FlipViewController

- (void)viewDidLoad {
    
    _containerView = [UIView new];
    _testBlueTicket = [UIView new];
    _testOrangeTicket = [UIView new];
    
    _containerView.translatesAutoresizingMaskIntoConstraints = NO;
    _testBlueTicket.translatesAutoresizingMaskIntoConstraints = NO;
    _testOrangeTicket.translatesAutoresizingMaskIntoConstraints = NO;
    
    _containerView.backgroundColor = [UIColor systemYellowColor];
    _testBlueTicket.backgroundColor = [UIColor systemBlueColor];
    _testOrangeTicket.backgroundColor = [UIColor systemOrangeColor];
    
    // respect safe area
    UILayoutGuide *g = [self.view safeAreaLayoutGuide];
    
    [_containerView addSubview:_testOrangeTicket];
    [_containerView addSubview:_testBlueTicket];
    
    [self.view addSubview:_containerView];
    
    [NSLayoutConstraint activateConstraints:@[
        
        [_containerView.widthAnchor constraintEqualToConstant:200.0],
        [_containerView.heightAnchor constraintEqualToConstant:260.0],
        [_containerView.centerXAnchor constraintEqualToAnchor:g.centerXAnchor],
        [_containerView.centerYAnchor constraintEqualToAnchor:g.centerYAnchor],
        
        [_testBlueTicket.widthAnchor constraintEqualToAnchor:_containerView.widthAnchor multiplier:1.0],
        [_testBlueTicket.heightAnchor constraintEqualToAnchor:_containerView.heightAnchor multiplier:1.0],
        [_testBlueTicket.centerXAnchor constraintEqualToAnchor:_containerView.centerXAnchor],
        [_testBlueTicket.centerYAnchor constraintEqualToAnchor:_containerView.centerYAnchor],
        
        [_testOrangeTicket.widthAnchor constraintEqualToAnchor:_containerView.widthAnchor multiplier:1.0],
        [_testOrangeTicket.heightAnchor constraintEqualToAnchor:_containerView.heightAnchor multiplier:1.0],
        [_testOrangeTicket.centerXAnchor constraintEqualToAnchor:_containerView.centerXAnchor],
        [_testOrangeTicket.centerYAnchor constraintEqualToAnchor:_containerView.centerYAnchor],
        
    ]];
    
    _testOrangeTicket.hidden = YES;
    
    UITapGestureRecognizer *t = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)];
    [self.view addGestureRecognizer:t];
}

- (void)didTap {
    
    UIView *fromView = self.testBlueTicket.isHidden ? self.testOrangeTicket : self.testBlueTicket;
    UIView *toView = self.testBlueTicket.isHidden ? self.testBlueTicket : self.testOrangeTicket;

    [UIView transitionFromView:fromView
                        toView:toView
                      duration:2
                       options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
                    completion:^(BOOL finished) {
        
    }];
    
}

@end
请注意,它使用的是
UIViewAnimationOptionShowHideTransitionViews
,因此“票证”视图保留在视图层次结构中


要想看得更清楚,请更改票证视图上的一些约束(例如宽度和/或高度约束上的
乘数:
)…然后,您将看到
.systemYellow
容器视图动画,其中嵌入了票证视图。

这听起来像是一个bug。您可以在问题中添加一个视频,告诉我们哪个视图是testOrangeTicket,或者发布一个我们可以尝试的最小可重复示例项目吗?(顺便说一句,您发布了Objective-C代码。对于Objective-C特定的问题,您可能不应该包含Swift标记。)