【问题标题】:How to use custom view in iOS with auto layout?如何在 iOS 中通过自动布局使用自定义视图?
【发布时间】:2014-09-20 03:36:01
【问题描述】:

我想在我的 iOS 应用中使用自定义视图,所以我在自定义视图的 xib 上放了一些 UI 组件,并为其添加了一些自动布局约束,然后运行模拟器,结果很好。

但是,我不喜欢让自定义视图覆盖整个窗口,而我想让它只覆盖窗口的一部分。所以我从代码中改变了它的大小,比如:

let detailView = NSBundle.mainBundle().loadNibNamed("DetailTaskView", owner: self, options: nil)[0] as DetailTaskView
detailView.frame = CGRectMake(20, 80, 280, 280)

但是,生成的自定义视图在大小方面很好,但是那里的组件没有正确对齐。特别是,尽管我将顶部约束 (8px) 添加到 UILabel 并将底部约束 (8px) 添加到 UIButton(以及两个组件的水平约束),但生成的自定义视图不会显示 @ 987654324@,看起来自定义视图的唯一顶部已被移除,而不是中间部分被切掉。

那么如何使用自定义尺寸的自定义视图呢?

更新

这是我的自定义视图:

[label]
--empty--
[button]

我要展示的内容如下:

[label]
[button]
// the empty part on the middle is chopped off in 4inch iPhone

但是,这是我得到的结果:

[label]
--empty--
// and the button on the bottom is chopped off

【问题讨论】:

  • 如果您也有正确的水平约束,您所说的应该会奏效。你有什么水平限制?
  • @rdelmar,我添加了水平约束,但我认为它与问题无关。但更新了原帖。
  • 如果按钮到视图底部的底部约束为 8,则不应发生这种情况。按钮上还有其他垂直限制吗?
  • 我发现问题出在标签的高度太大(或高?大?),导致按钮无法显示在视图上。谢谢,@rdelmar。

标签: ios uiview swift autolayout


【解决方案1】:

您的 xib 的主视图是否设置为 280x280 像素?如果是这样,那么您设置的任何约束都应该保持 - 换句话说,如果您的标签和按钮适合 280x280 xib,那么它们应该在运行时正确显示。在标签底部和按钮顶部之间设置垂直间距约束也可能会有所帮助。还要确保包含您的自定义视图的任何视图都不会将自定义视图的大小设置为超出您预期的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2011-05-18
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多