在 iOS 能偵測數種的裝置擺設狀態,包含螢幕朝上或是朝下 ,左右傾倒或是上下顛倒等等,相關的裝置擺設可以查閱 Accelerometer / 加速器 / 重力控制器 / 水平儀的基本使用方法一文。但是在畫面的呈獻上卻只有兩種狀態,直立與傾置(Portrait and Landscape),如果你的應用程式需要支援不同的呈現方式,那麼在介面元件的安排上就可能會需要判斷目前的畫面方向。
首先將程式設定成讓螢幕畫面可以自動轉向來對應裝置的擺設,好方便我們之後的測試,找到專案內的 ViewCotroller.m 並加入或修改以下的內建函式。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return YES;
}
現在程式畫面已經可以隨著裝置的擺設角度不自動旋轉到對應的位置,接著我們可以利用以下的內建函式來獲得當前的畫面方向,此函式會在每次畫面重繪或是旋轉時被觸發。
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
//畫面傾置
}
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
//畫面直立
}
}
最後,如果你是使用 Interface Builder 來設計你的介面元件,由於畫面在旋轉的過程成導致元件有變形的情形,可以在元件的 Size Inspector 中拿掉 Autosizing 屬性,如下圖(絕對置中和絕對大小)。
沒有留言:
張貼留言