簡體   English   中英

UIView 從 xib 作為子視圖加載:如何正確設置框架/大小?

[英]UIView loaded from xib as subview : How to set the frame/size properly?

我的 iphone 應用程序有一個小問題(即使我之前已經完成了 objective-c,我對 iphone 編程還是很陌生)。

我的主 window 中有一個名為centerView的 UIView。 我創建了一個與 xib 文件鏈接的 UIViewController 的 singleton 子類(我們稱之為FooViewController )。 我的目標是將關聯視圖加載為子視圖(使用 centerView 的整個框架的 centerView)。

問題:FooViewController 控制的視圖不使用其父視圖的框架。

我試圖添加:

  • self.view.frame = self.view.superview.frame self.view.superview.frame initWithNib的“自定義初始化”部分... FooViewController的方法

  • [[[FooViewController sharedController] view] setFrame:centerView.frame]當我將視圖添加到 centerview 時( [centerView addSubView:[[FooViewController sharedController] view]] )(我在這條線之前和之后都試過)

但我無法獲得良好的行為(即良好的尺寸)。 有多個與此類問題相關的問題,但我無法在其中找到答案,因此:

  • 你知道我該如何解決嗎?
  • [可選] 與 xib 鏈接的 UIViewController 的實例化如何工作? 必須有一個資源文件,其中指明了 xib 的名稱? 或者它是否在尋找與 class 同名的 xib?

在此先感謝您的幫助。

從 NIB 加載時,視圖會在視圖控制器的loadView方法中加載,而不是在初始化程序中。 由於您不應該真正覆蓋loadView ,尤其是。 如果您從 NIB 加載它,您應該嘗試在視圖控制器的viewDidLoad方法中執行 #1 ( self.view.frame = self.view.superview.frame )。 當然,您應該確保在執行此語句時將視圖添加到超級視圖中。 您還需要確保此時已正確設置超級視圖的框架。

另一個可以嘗試的地方是viewWillAppear:方法。 到那時,您的視圖的超級視圖很可能已經正確設置。

暫無
暫無

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

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