2011-07-12 33 views
7

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

+0

您正在使用哪种版本的IB/Xcode? – bshirley

+0

'initWithCoder:'在从一个笔尖加载一个对象时被调用,您可以交替地覆盖'awakeFromNib' – bshirley

+0

使用Xcode 4.0.1。 @bshirley我认为是这种情况,所以我也在'loadView'中设置了断点,在任何情况下都应该调用它。 – jamone

回答

10

您可以将UIView拖放到nib文件上,然后使用identity inspector(command-opt-3)将该类更改为UIView的任何子类。

您将需要设置初始化代码子类从笔尖加载时调用,即initWithFrame:。如果您编写完整性代码,则两种方法(基于程序和基于笔尖的)都应调用相同的初始化。

如果你喜欢,只是创建和初始化代码addSubview:,然后实现layoutSubviews布局您的自定义子视图。这将在任何时候调用视图以及初始调用。

+0

我是个白痴。 'loadView'不是'UIView'上的方法,而是'UIViewController'上的方法。其他然后这个混乱我正是这样的 – jamone

+1

德哦 - 那*会*是一个问题=) – bshirley

相关问题