自动布局CGAffineTransform iOS7 iOS8

自动布局CGAffineTransform iOS7 iOS8,ios7,storyboard,ios8,autolayout,cgaffinetransform,Ios7,Storyboard,Ios8,Autolayout,Cgaffinetransform,几个小时以来,我一直在试图弄清楚,为什么当我应用CGAffineTransformMakeScale时,autolayout在iOS8中打破了我的约束,而在iOS7中却没有。(我将Xcode 6.0.1(6A317)与情节提要和自动布局一起使用) 守则: TCTGridController *gridController = self.gridController; stackController.view.frame = gridController.view.frame; stackCont

几个小时以来,我一直在试图弄清楚,为什么当我应用CGAffineTransformMakeScale时,autolayout在iOS8中打破了我的约束,而在iOS7中却没有。(我将Xcode 6.0.1(6A317)与情节提要和自动布局一起使用)

守则:

TCTGridController *gridController = self.gridController;
stackController.view.frame = gridController.view.frame;
stackController.stackCollectionView.transform = CGAffineTransformMakeScale(0.1, 0.1);

[gridController.view.superview addSubview:stackController.view];

[UIView animateWithDuration:0.2 animations:^{
    stackController.stackCollectionView.transform = CGAffineTransformMakeScale(1, 1);
    [stackController.stackCollectionView layoutIfNeeded];
} completion:^(BOOL finished) {
    [stackController didMoveToParentViewController:self];
}];
iOS7结果:

iOS8结果:

iOS8上的约束错误:

(
"<NSLayoutConstraint:0x7fa126a9b100 V:[_UILayoutGuide:0x7fa126a9a900]-(120)-[TCTCollectionView:0x7fa125139400]>",
"<_UILayoutSupportConstraint:0x7fa126a8b500 V:[_UILayoutGuide:0x7fa126a9a900(0)]>",
"<_UILayoutSupportConstraint:0x7fa126a8a960 V:|-(0)-[_UILayoutGuide:0x7fa126a9a900]   (Names: '|':UIView:0x7fa126a9a810 )>",
"<NSAutoresizingMaskLayoutConstraint:0x7fa126c86840 h=--- v=--- 'UIView-Encapsulated-Layout-Top' V:[UIView:0x7fa126a9a810]-(0)-|>"
)
(
"",
"",
"",
""
)
有什么想法吗

阿拉克

问题来自

stackController.view.frame = gridController.view.frame; 
而不是从CGAffineTransformMakeScale。因为我没有取消选中“从笔尖调整视图大小”。 为了解决这个问题,我取消选中“从NIB调整视图大小”并添加:

[stackController.view setTranslatesAutoresizingMaskIntoConstraints:YES];

CGAffineTransformity在ios7和ios8上的行为不同。这与自动布局和大小类有关。解决方案是删除与ios7上的动画冲突的约束

// solve the constraint-animation problem
if(NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) {
    // iOS7 remove constraints that conflict with animation
    if (self.centerYAlignment != nil) {
    self.view.removeConstraint(self.centerYAlignment) //is an IBOutlet 
    }
} else {
    // iOS8 constraint animations are fine
}
//解决约束动画问题

如果(NSFoundationVersionNumber我也有同样的问题。CGAffineTransformMakeScale在iOS7上运行良好,但在iOS8上导致了“无法同时满足约束”错误。对我来说,解决方案是在应用转换之前将de视图添加到父视图并调用子视图上所需的LayoutIfNeed

之前:

subview.transform = CGAffineTransformMakeScale(0.001f, 0.001f);
之后:

[view addSubview:subview];
[subview layoutIfNeeded];
subview.transform = CGAffineTransformMakeScale(0.001f, 0.001f);

非常感谢-浪费了我2小时的时间;D
[子视图布局需要];
完成了这项工作。