【问题标题】:Changing view transform changes views positions on iOS 7 but not on ios8更改视图转换会更改 iOS 7 上的视图位置,但不会在 ios8 上更改视图位置
【发布时间】:2014-10-27 13:47:25
【问题描述】:

我有一个容器视图控制器。它将另一个控制器添加为子视图控制器,并将其视图添加到视图层次结构中。

所以现在我有:

UIView *self.view //main view
UIView *childView //child view controller's view

我也有UIImageView *imageView 作为childView 的孩子。 ImageView 从左侧、右侧和顶部通过一些常量(12 个点)固定到其父级。

当我点击按钮时,我会使用以下代码滑动子视图:

- (void)swipeDown:(UISwipeGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateRecognized && !self.menuOpened) {

        [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{

            self.childView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 0, 120);

        } completion:^(BOOL finished) {

        }];
    }
}  

所以问题 - 就在动画开始之前,imageView 将其位置向上移动了一些。 这可以通过在动画前后将约束更改为任意数量来解决,但这是一种肮脏的技巧,因为它需要不同设备的不同值。

在 ios 8 上应该是什么样子并且实际上可以工作:

它在 iOS 7 上的样子(设置标签无关紧要,注意图像相对于导航栏的位置):

同样,在 iOS 8 上,转换工作正常,没有任何子视图被移动。在 iOS 7 上,当视图变换发生变化时,子视图会失去控制。我该如何解决?

【问题讨论】:

标签: ios objective-c ios7 ios8


【解决方案1】:

好吧,AutoLayout 不适用于 CGAffineTransform。看看这个How do I adjust the anchor point of a CALayer, when Auto Layout is being used?

【讨论】:

猜你喜欢
  • 2011-02-13
  • 2018-02-20
  • 2019-04-23
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 2018-04-05
  • 2021-10-31
  • 1970-01-01
相关资源
最近更新 更多