0

我在 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 的工作原理和相应的功能。

4

1 回答 1

0

您可以在该视图上使用 CGAffineTransform 来解决该问题。欲了解更多信息,请访问:这个这个

于 2012-08-17T09:13:39.943 回答