2012-08-17 75 views
0

我在我的willrotatetointerfaceorientation方法中使用了下面的代碼。CGRect和CGrectmake Objective C疑惑

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); 
} 

這工作正常,如果我旋轉一次,即對人像,或反之亦然lanscape。但是,如果我從縱向改爲顛倒,觀點的方向會受到干擾!該控件正在進入else塊,但方向不是它本來的樣子。

我所假設的是,對於CGRect,視圖的原點是相對於父視圖的左上角指定的。這是窗口本身。此外,我在這裏指定的座標與我在故事板上看到的完全不同,我的意思是差不多一倍或一半! 如果我想在我的viewWillAppear方法中使用相同的代碼(如上所述),那麼我必須爲同一個視圖位置使用一組不同的座標,這個座標與我在故事板上看到的相似。

我想我可能不清楚CGRect的工作和相應的功能。

回答

0

您可以在該視圖上使用CGAffineTransform來解決該問題。欲瞭解更多信息,請訪問:THISTHIS