我很難弄清楚如何處理我的iPad應用程序的一個屏幕不同的設備方向。這是我的情況:如何在iOS中旋轉時移動一個UIView?
〜除了一個標籤外,所有屏幕都可以使用彈簧和支柱完美旋轉。這個標籤的問題是我希望它以非正統的方式(對角線)移動,因此彈簧和支柱(或調整掩碼不起作用)。
〜那我考慮這樣做的方式是這樣:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)newInterfaceOrientation duration:(NSTimeInterval)duration
{
if(UIInterfaceOrientationIsLandscape(newInterfaceOrientation))
{
self.myScreenLabel.frame = CGRectMake(600,0,400,100);
}
else {
self.myScreenLabel.frame = CGRectMake(...//something); }
}
我還要把支票在viewDidLoad中有類似的邏輯。 If in portrait mode, put label at... else put label at...
。
我認爲這會奏效;然而,我有點想知道是否有更好的設計方法來做到這一點。上面的方法到處都有硬編碼的數字;因此,有沒有更好的方法來做到這一點?此外,這種方法並沒有利用這樣一個事實,即我的標籤完美地放置在縱向模式的故事板中,而且這只是我需要改變的風景。
有關更好設計的任何建議?
我會保持簡單:將兩個視圖作爲代理放入您的筆尖,然後使用其中任意一個設置標籤的框架。這樣,你只保留一個筆尖,並在IB中做所有的佈局。代理視圖可以保持隱藏狀態。使這項工作所需的代碼非常少且非常可讀,如下所示:'self.actualLabel.frame = landscape?self.landscapeProxy.frame:self.portraitProxy.frame;' – mvds