这是我尝试做的事情:
想象一下我的parentView作为书籍封面。该视图具有UIImageView子视图。 我的问题是,当我将parentView翻转180°(我打开书)时,我仍然可以在它前面看到UIImageSubview。我希望我的封面内部只是白色。
我带来的唯一想法是将UIImageView子视图隐藏在旋转的一半但我不认为它真的很聪明。
如果你们可以帮助我,
感谢的
编辑:我实际上正在使用 [UIView animateWithDuration:someDuration animations:^{
viewToTransform.layer.transform = CATransform3DRotate(transform,
(M_PI * 0.999 * -dir), 0.0, 1.0, 0.0);
}];
旋转时,我会试着隐藏> PI / 2
我会告诉你更新,
[UIView animateWithDuration:someDuration animations:^{
viewToTransform.layer.transform = CATransform3DRotate(transform,
(M_PI * 0.999 * -dir), 0.0, 1.0, 0.0);
_coverImage.hidden = atan2f(viewToTransform.layer.transform.m12, viewToTransform.layer.transform.m11) > M_PI_2 ? YES : NO;
}];
这不起作用,因为它在动画开始时隐藏了子视图:'(
答案 0 :(得分:0)
以下代码将允许您在动画完成后隐藏子视图部分。
[UIView animateWithDuration:5.0
animations:^{
//Animation code goes here
} completion:^(BOOL finished) {
//Code to run once the animation is completed goes here
}];
正如您所看到的,UI视图元素具有在动画之后触发的完成事件,这意味着可以很容易地将其挂钩以执行您需要的操作。
答案 1 :(得分:0)
如果要隐藏图像视图,请尝试以下代码:
[UIView animateWithDuration:someDuration animations:^{
viewToTransform.layer.transform = CATransform3DRotate(transform,
(M_PI * 0.999 * -dir), 0.0, 1.0, 0.0);
}];
[_coverImage performSelector:@selector(setHidden:) withObject:@YES afterDelay:(someDuration/2)];
更好的解决方案是在翻转动画之后的新UIView animateWithDuration..
块中设置图像视图的alpha值,持续时间的一半:
[UIView animateWithDuration:someDuration animations:^{
viewToTransform.layer.transform = CATransform3DRotate(transform,
(M_PI * 0.999 * -dir), 0.0, 1.0, 0.0);
}];
[UIView animateWithDuration:someDuration/2 animations:^{
_coverImage.alpha = 0.0f;
}];