我在 willrotatetointerfaceorientation 方法中使用以下代码。
if(UIDeviceOrientationIsLandscape(toInterfaceOrientation))
{
NSLog(@"willRotateToInterfaceOrientation landscape");
self.textFieldResult.frame = CGRectMake(146, 210, 97, 31);
self.operationLabel.frame = CGRectMake(73, 210, 120, 21);
}
else if (UIDeviceOrientationIsPortrait(toInterfaceOrientation))
{
NSLog(@"willRotateToInterfaceOrientation Portrait");
self.textFieldResult.frame = CGRectMake(305, 134, 97, 31);
self.operationLabel.frame = CGRectMake(82, 138, 120, 21);
}
如果我旋转一次,这很好用,即横向到纵向,反之亦然。但是,如果我从纵向变为倒置,视图的方向就会受到干扰!控件正在进入 else 块,但方向不是应有的方向。
我假设对于 CGRect,视图的原点是相对于父视图的左上角指定的。这是窗口本身。
此外,我在这里指定的坐标与我在故事板上看到的完全不同,我的意思是几乎是两倍或一半!如果我想在我的 viewWillAppear 方法中使用相同的代码(如上),那么我必须为相同的视图放置使用一组不同的坐标,这些坐标类似于我在情节提要上看到的坐标。
我想我可能不清楚 CGRect 的工作原理和相应的功能。