我有一个视图,其子视图根据约束进行调整(iOS 6 之前,没有自动布局)。我旋转设备,视图按预期动画到它们的新位置和尺寸。
我向我的 XIB 添加了一个新视图。当设备旋转时,此视图将需要以约束无法描述的方式更改位置。是否可以允许除新视图之外的所有视图的默认旋转逻辑?
如果没有(这个问题表明没有)应该如何处理这种情况?
我尝试在旋转的同时添加自己的动画,但这几乎肯定是错误的(帧并不总是在完全相同的位置结束,可能是因为两个动画同时发生)。
// Called on "viewWillAppear"
- (void)adjustLayout
{
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{
self.myView.frame = CGRectMake(150, 128, 181, 39);
}
else
{
self.myView.frame = CGRectMake(119, 148, 181, 39);
}
}
// Called on willRotateToInterfaceOrientation
- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
{
// This is not really a good way to override the default animations, but it gets the job done.
[UIView animateWithDuration:duration animations:^{
if (UIInterfaceOrientationIsLandscape(orientation))
{
NSLog(@"frame: %@", NSStringFromCGRect(self.myView.frame));
self.myView.frame = CGRectMake(69, 201, 181, 39);
}
else
{
NSLog(@"frame: %@", NSStringFromCGRect(self.myView.frame));
self.myView.frame = CGRectMake(258, 94, 181, 39);
}
}];
}