簡體   English   中英

SubView無法調整設備旋轉

[英]SubView not adjusting on device rotation

我要在視圖中添加子視圖。 一切正常。 我的應用程序支持自動旋轉。 當我旋轉設備時,我的父視圖應該自動旋轉/將被調用,但是子視圖應該自動旋轉/將不被調用。 因此,我無法設置子視圖的UI組件的位置。

viewController = [[abcController alloc] initWithNibName:@"abcController" bundle:nil];
[self.view addSubview:viewController.view];

任何指針都會有所幫助。

這是因為您無法在功能上將一個視圖控制器中的視圖添加到另一視圖控制器的視圖樹中,並希望第二個視圖控制器獲取消息。

你需要

  1. 讓您添加的視圖成為第一個UIViewController一部分(而不是第二個UIViewController
  2. 使用addChildViewController方法將第二個視圖控制器添加為第一個視圖控制器的子代(這將允許轉發這些消息)。

您的視圖缺少正確的自動調整大小設置:

viewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

除此之外,如果您的意思是沒有調用abcControllershouldautorotate/willanimate ,那是正常現象。

您的主控制器應實現某種包含邏輯,並將shouldautorotate/willanimate給您的控制器。 即,您的主控制器可以在abcController實例上調用shouldautorotate/willanimate ,但隨后它應該知道它。 順便說一句,Apple不建議這樣做,但這是要支持iOS4的唯一方法。

另外,您可以使用iOS> 5的UIViewController Containment

這訴諸於使用兩種方法:

@interface UIViewController (UIContainerViewControllerProtectedMethods)

 - (void)addChildViewController:(UIViewController *)childController;
 - (void)removeFromParentViewController;

@end

在這里您可以找到一個很好的教程。 在iOS4上將無法使用。

為了使視圖控制器能夠接收shouldautorotate / willanimate調用,您需要將其置於“視圖層次結構”中。 因此,如果僅將其視圖添加為子視圖,則不會調用這些方法,但如果將此視圖控制器推入導航控制器或將其作為模式視圖控制器呈現,或使用addChildViewController方法(適用於iOS 5+),則為視圖控制器將收到這些消息。 如果僅要將其視圖添加為子視圖,則可以使用autoresizingMask。 (但是然后我看不到創建視圖控制器的意義,而不僅僅是自定義視圖)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM