簡體   English   中英

在UIViewController的loadView中使用什么尺寸?

[英]What size to use in UIViewController's loadView?

我的容器UIViewController將向其視圖層次結構添加另一個CustomViewController的視圖。 它首先創建控制器,然后調整其視圖大小,最后將其添加到其視圖中。

    //create the controller
    customController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
    [customController willMoveToParentViewController:self];
    [self addChildViewController:customController];
    [customController didMoveToParentViewController:self];

    //size and position the controller's view 
    customController.view.frame = CGRectMake(10, 10, 100, 50);

    //add the new controller's view
    [self.view addSubview:customController.view];
    [customController didMoveToParentViewController:self];

調整大小部分是我的問題。

CustomViewControllerloadView中以編程CustomViewController創建其視圖,並在其中添加了許多子視圖。 由於CustomViewController並不真正知道視圖的大小,最終將使用init (不提供框架)。

這對於簡單的UIView來說效果很好,但是一旦添加子視圖,就會出現問題。 因為框架是CGRectZero,所以將那些子視圖放置在“ loadView”中實際上是行不通的。 此外,一旦我設置了自動調整大小蒙版以確保正確縮放,最終結果是所有子視圖都將增長以占據整個視圖。 可能是因為子視圖的坐標全都是視圖框架的100%(因為視圖的框架是CGRectZero)。

簡而言之,我應該在loadView使用什么尺寸的框架? 我是否應該假設我希望該視圖占據的典型視圖大小? 還是有更好的方法允許我添加子視圖但推遲控制器視圖的大小?

UIViewController的視圖在viewWillAppear方法中具有實際大小(UIViewController生命周期的方法)。 因此,您可以繼承UIViewController類,並在其中布局子視圖。

但是,我想給您一些建議。 您應該使用視圖控制器的loadView方法創建它的視圖。 否則,您可能會遇到內存管理問題和視圖布局問題。 在init方法中調用視圖屬性不是一個好主意,因為它會自動調用UIViewController的loadView方法。

閱讀有關UIViewController生命周期的更多信息。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

我的建議:使用父UIViewController的loadView創建它的視圖。 viewWillAppear中的布局視圖。

祝好運! 如果您有任何疑問,請問更多:)

您可以為子視圖相對於其子視圖設置框架。 喜歡

subview.frame = CGPointMake(self.view.frame.size.width *0.2,  self.view.frame.size.height *0.2, self.view.frame.size.width *0.8, self.view.frame.size.height *0.8);

暫無
暫無

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

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