【问题标题】:Creating a UIView in Interface Builder that automatically centers itself when added as a subview在 Interface Builder 中创建一个 UIView,在添加为子视图时自动居中
【发布时间】:2010-02-08 01:05:49
【问题描述】:

我在 Interface Builder 中创建了一个 UIView xib,并尽我所能表明 UIView 应该居中,将自己锚定在中心,将自己定位在中心坐标中等等。

但每当我在代码中将其添加为子视图时,我还必须以编程方式将其框架设置为CGRectMake(),否则它将始终添加到其父视图的左上角。重新构建它的数学是毫无意义和丑陋的,所以我认为我只是没有正确地在 IB 检查器中玩弄一点。

任何人都可以确认这是可能的,如果可以,我需要在 IB 中做些什么来实现这一点?

【问题讨论】:

    标签: iphone cocoa-touch uikit interface-builder


    【解决方案1】:

    为什么不把刚刚添加的子视图的 .center 设置为父视图的宽度和高度减半创建的点?

    要么用 IB 定义视图进入的矩形(我在想象一个容器视图),然后简单地将要添加到 containerView.bounds 的视图的框架设置为(bounds 是一个与位置无关的值,所以 x ,y 将为 0,而 size 将等于容器大小。

    【讨论】:

    【解决方案2】:

    在 IB 中无法居中但保持大小。居中但保持其超级视图的边距。

    您将不得不覆盖 layoutSubviews 消息或仅保留您编写的计算代码。

    【讨论】:

    • 贾斯汀·塞尔斯:问题不在于 IB。您的问题是 autoresizingMask 仅适用于调整视图超级视图的大小;掩码定义了它对视图的影响。如果还没有父视图,那么就没有“居中”,因为“居中”是指视图在其父视图中的位置。您不能保持视图居中,这是自动调整掩码所做的,直到视图有一个超级视图使其居中in。所以,当你自己把view放到superview中的时候,你需要自己去调整它的frame。
    • @JustinSearls Windows 窗体和 WPF GUI 类以几乎相同的能力呈现自动调整大小。
    猜你喜欢
    • 2012-01-13
    • 2012-08-15
    • 2015-01-24
    • 1970-01-01
    • 2011-04-16
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多