iOS8下的CGAffineTransformMakeRotation和Autolayout问题

Sha*_*hai 11 objective-c ios ios8

在简单的UIView上应用旋转变换后

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * -0.5);

simpleVIew_.transform = trans;
Run Code Online (Sandbox Code Playgroud)

其中有以下约束

[self addConstraints:@[
   [NSLayoutConstraint constraintWithItem: simpleView_ attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual
                                   toItem:nil attribute:NSLayoutAttributeNotAnAttribute
                               multiplier:1 constant:50],

   [NSLayoutConstraint constraintWithItem: simpleView_ attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual
                                   toItem:self attribute:NSLayoutAttributeHeight
                               multiplier:1 constant:270],

   [NSLayoutConstraint constraintWithItem: simpleView_ attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual
                                   toItem:self attribute:NSLayoutAttributeLeft
                               multiplier:1.0 constant:0],

   [NSLayoutConstraint constraintWithItem: simpleView_ attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual
                                   toItem:self attribute:NSLayoutAttributeBottom
                               multiplier:1.0 constant:0]

]];
Run Code Online (Sandbox Code Playgroud)

我在iOS7.1和iOS8 beta 5之间得到了两个不同的结果:

iOS7.1

<UIView: 0x1655d990; frame = (0 30; 50 270); transform = [0, -1, 1, 0, 0, 0]; opaque = NO; layer = <CALayer: 0x1655dab0>
Run Code Online (Sandbox Code Playgroud)

iOS8测试版5

<UIView: 0x16e5a530; frame = (-110 140; 270 50); transform = [0, -1, 1, 0, 0, 0]; opaque = NO; layer = <CALayer: 0x16e61880>>
Run Code Online (Sandbox Code Playgroud)

注意框架中的差异 - 宽度/高度值已切换,x,y坐标已更改.

任何想法为什么7.1和8之间存在如此巨大的差异?

小智 0

尝试将简单视图添加到容器视图中。我在至少两个视图中看到了类似的问题,并且在这两种情况下将它们添加到容器视图似乎可以解决问题。

编辑

我所说的容器视图,只是将简单视图添加到 UIView,然后将约束和旋转应用到容器。