UIView 过渡动画期间的 UIView 子视图剪辑

UIView subview clips during UIView transition animation

我创建了一个包含 UIImageView 子视图的 UIView 子类。 UIIMageView 子视图通常可能位于其父视图(我的 UIView 子类)的范围之外。这不是问题,因为我的子视图没有 'clipsToBounds',所以不会发生裁剪。直到我的子视图执行过渡动画。

[UIView transitionWithView:self
                      duration:0.7
                       options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent
                    animations:^{
                        self.bodyView.transform = CGAffineTransformMakeScale(-1.0, 1.0);
                    }
                    completion:^(BOOL fin){
                    }];

在这个例子中 'bodyView' 是我的 UIView 子类的 UIImageView 子视图。在过渡期间 bodyView 剪辑。我尝试将超级视图层的 'masksToBounds' 属性 设置为 'NO' 但这并没有解决问题。

我目前唯一的解决方法是让父视图比子视图大得多,并且不允许子视图的框架存在于父视图的边界之外,但这在我的应用程序中不切实际。

试试这个:

imgView.contentMode = UIViewContentModeScaleAspectFit;

我已经解决了。恐怕这是我自己造成的问题。我在 transitionWithView:duration:options:animations: 方法中引用了错误的视图。我应该引用动画的视图,即子视图。代码现在无需裁剪即可像这样工作:

[UIView transitionWithView:self.bodyView
                  duration:0.7
                   options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent
                animations:^{
                        self.bodyView.transform = CGAffineTransformMakeScale(-1.0, 1.0);
                    }
                    completion:^(BOOL fin){
                    }];