[英]Calling viewWillTransitionToSize: manually
我目前有一個名為Page2
的UiViewController現在,如果Iphone的方向改為橫向,則調用以下方法,這是好的和好的
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
/*The orientation of the phone just changed*/
}
現在我的問題是,如果用戶已經在ViewController page1中處於橫向模式並轉到UIViewController Page2
,則不會調用上述方法。 我知道我可以使用以下代碼檢查手機的當前方向
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft)
{
//Its in landscape mode
}
但是我不知道要為方法傳遞大小的參數(僅在方向更改時自動調用)我想在橫向模式下檢測到它時手動調用此方法。 有關如何獲取當前大小以傳遞給下面的方法的任何建議,其中寬度將大於高度(因為它在橫向模式下)
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator ;
我試過這樣做
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
[self viewWillTransitionToSize:self.view.frame.size withTransitionCoordinator:nil];
}
然而,高度大於寬度,表明它仍處於縱向模式......我做錯了什么? 如何手動調用此方法並傳遞寬度大於高度的當前大小?
更新:
我想提供更多背景知識。 我目前有兩個UIViewControllers PageOne
和PageTwo
。 現在PageTwo
有類似的東西用於方向控制。 控制流程從PageOne
轉到PageTwo
//When device rotates
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
DKTuner* sensitivityTuner;
if (size.width > size.height)
{ //Yes this is the landscape mode - Realign some controls to a different position.
.....
}
else
{
// this is portrait mode
.....
}
}
現在我在PageTwo
代碼邏輯假定用戶在縱向模式下輸入它。 但實際上並非總是如此,因為用戶可以在LandscapeMode中輸入pageTwo
。 在這種情況下,控件不會重新調整到橫向模式,因為重新定向的方法不會在pageTwo中調用。 我的問題是如何手動調用reorientation方法viewWillTransitionToSize
並傳遞尺寸寬度大於高度的尺寸參數?
無論你在viewWillTransitionToSize:withTransitionCoordinator:
做什么,你應該在viewWillLayoutSubviews
或viewDidLayoutSubviews
做。 這些都是在旋轉時發送的,當視圖控制器的視圖首次出現在屏幕上時,UIKit會在調用viewWillLayoutSubviews
之前更新視圖的幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.