【问题标题】:Custom UIControl subclass set position in IB for iOSIB for iOS 中的自定义 UIControl 子类设置位置
【发布时间】:2011-07-12 22:27:40
【问题描述】:

我正在创建一个 UIControl 子类,因此以编程方式布置其中的所有内容。现在我已经完成了,我需要在不同的屏幕上多次放置它。我知道您不能为 iOS 制作 IB 插件,但是没有办法在 IB 中获取 UIView 并将其大小/放置在我的控件应该在的位置,然后将其“自定义类”属性设置为我的 UIControl 的子类?我知道我不会看到它显示它在 IB 中的真实方式,但至少这让我可以相对于屏幕上的其他内容设置整体大小和位置。我还在 viewController 中创建了 IBOutlets 并将 IB 中的视图正确连接到它们。但是,在运行时,我看不到任何自定义设置,并且当我在 initWithFrame:loadView 中设置断点时,我从未看到我的代码被调用。我该怎么做?

【问题讨论】:

  • 您使用的是哪个版本的 IB/Xcode?​​span>
  • initWithCoder: 在从 nib 加载对象时调用,您可以交替覆盖 awakeFromNib
  • 使用 Xcode 4.0.1。 @bshirley 我认为是这样,所以我还在loadView 中设置了断点,这两种情况都应该调用。

标签: ios interface-builder custom-controls


【解决方案1】:

您可以将 UIView 拖到 nib 文件上,然后使用身份检查器 (command-opt-3) 将类更改为 UIView 的任何子类。

您需要在从 nib 加载时调用的初始化代码中设置子类,即 initWithFrame: 中的 not。如果您正在编码完整性,两种方法(编程和基于 nib)都应该调用相同的初始化。

如果您愿意,只需在初始化代码中创建和addSubview:,然后实现layoutSubviews 来布局您的自定义子视图。每当视图调整大小以及最初时都会调用它。

【讨论】:

  • 我是个白痴。 loadView 不是UIView 上的方法,而是UIViewController 上的方法。除了这个傻瓜,我完全是这样的
  • d'oh - 那是个问题=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 2014-03-22
  • 1970-01-01
相关资源
最近更新 更多