ios - 更改 View 变换会更改 iOS 7 上的 View 位置,但不会更改 ios8

标签 ios objective-c ios7 ios8

我有一个容器 View Controller 。它添加另一个 Controller 作为 subview Controller ,并将其 View 添加到 View 层次结构中。

所以现在我有:

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

我还有 UIImageView *imageView 作为 childView 的 subview 。 ImageView 从左、右和顶部用一些常数(12 点)固定到其父级。

当我点击按钮时,我使用以下代码滑动 subview :

- (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 将其位置向上移动了一些。 这可以通过在动画之前和之后将约束更改为某个任意量来解决,但这是一个肮脏的 hack,因为它需要针对不同的设备使用不同的值。

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

enter image description here

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

enter image description here

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

最佳答案

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

关于ios - 更改 View 变换会更改 iOS 7 上的 View 位置,但不会更改 ios8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589013/

相关文章:

ios - 如何将 NSMutableArray 值共享给 MFMailComposeViewController

ios - Xcode UI 测试 - UITableView 部分

ios - 奇怪的 UITable Separator 问题 - 右移

ios - UIButton Touchdown 在 IOS 7 中是否过于敏感?

ios - 弹出 View 在设备中不起作用

ios - 应用程序运行时如何处理设置中的语言更改

iphone - 使用缩进级别在 ios 中的 UITableview 中下拉

iOS - "' Foundation/Foundation.h' 文件未找到“Swift 项目内的自定义框架内出错”

c++ - 将 C++ 类与 Objective C 类混合

ios - 带有两个 UITableView 和 Autolayout 的 UIViewController