【问题标题】:Centering UIView in LoadView在 LoadView 中居中 UIView
【发布时间】:2012-01-29 17:57:34
【问题描述】:

只是想知道你们在 loadView 中如何在 viewcontrollers 主视图中将子视图居中。我知道如何将其居中的代码,但问题是,在 loadView 中,viewcontrollers 主视图框架不正确,因为它尚未调整大小以适合我的标签栏和导航栏。因此,如果我在其中将子视图居中,则在视图出现时它不会居中。我做了一些试验,似乎 viewcontrollers 视图在调用 viewWillAppear 之后和调用 viewDidAppear 之前正确地设置了它的框架。任何人都对我如何在 loadView 中正确完成此任务有任何见解? (覆盖 layoutSubviews 不是一个选项)

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch uiviewcontroller


    【解决方案1】:

    如果您想让子视图始终位于中心,则应在正确设置view 属性后,在-viewDidLoad-loadView 中设置正确的子视图框架,并设置其autoresizingMask属性到UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin

    还记得将您的超级视图的 autoresizesSubviews 设置为 YES,无论是来自 xib 还是您的初始化代码。

    【讨论】:

    • 当您在loadView中以编程方式实现视图时,仍然没有在viewDidLoad中设置正确的视图框架。另外,设置那些自动调整大小的蒙版有什么帮助,那些用于调整大小而不是重新定位的蒙版。
    • 实际上,autoresizingMask 用于调整视图大小和定位视图。这个答案是正确的。
    • 只需在 viewDidLoad 中设置它的框架。切换 UIViewAutoresizingFlexibleWidth 和 UIViewAutoresizingFlexibleHeight 会导致它调整大小。试着想象一下这些术语的含义,或者在 xib 面板的大小检查器中查看 Autoresizing 图,玩弄一下。
    • 你这个混蛋,你是绝对正确的,我所做的只是为了这件事和你吵架。我将您提到的 autoresizingmasks 更改为 loadView 中的子视图,效果很好。不必在 viewDidLoad 中设置框架。您能否更改您的答案以反映这一点,我将其标记为正确?
    猜你喜欢
    • 2011-07-04
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多