子类化 UIView 并显示多个实例

Posted

技术标签:

【中文标题】子类化 UIView 并显示多个实例【英文标题】:Subclassing UIView and displaying multiple instances 【发布时间】:2010-12-15 17:13:41 【问题描述】:

我正在尝试执行以下操作:

    显示自定义UIView 的实例。这个UIView 子类应该从Interface Builder 加载它的内容,因为它显示了我不想手动创建的东西。 我的问题是:如何在 UIView 子类中从 Interface Builder 加载?

    我最终会将这个视图动画化并从屏幕中释放出来。 (我知道该怎么做:-))

    转到第 1 步,即创建我的 UIView 的新实例并显示它。

可能是一个愚蠢的问题,但我似乎无法弄清楚。我会很感激一些帮助,法比安

【问题讨论】:

【参考方案1】:

ios 4.0+ 中,创建一个引用您的 nib 文件 (+nibWithNibName:bundle:) 的 UINib 实例,然后使用 -[UINib instantiateWithOwner:options:] 实例化 nib 中的对象。

如果您也需要以 iOS 3.x 为目标,请致电:

[[NSBundle mainBundle] loadNibNamed:owner:options:]

返回 nib 文件中的对象数组。

【讨论】:

我已经使用了这种方法,但是我没有成功地使圆角视图的角变得透明。我的 NIB 加载的自定义 UIView 是带角的矩形,而不是圆角矩形。有什么建议吗? 一个与另一个有什么关系?【参考方案2】:

要从 Interface Builder 加载界面,您需要使用 UIViewController。如果你不使用界面生成器,你可以创建一个 uiview 子类,创建你的界面,然后创建你的类的实例。对于每一堂课,您需要做的就是:

MyView *view = [[MYView alloc] initWithFrame:theFrame];
MyView *secondView = [[MyView alloc] initWithFrame:theFrame];
//do stuff with the views
//release the views
[view release];
[secondView release];

【讨论】:

以上是关于子类化 UIView 并显示多个实例的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIView 子类的 UITableViewCell 在单元格上创建多个图层

Android 无法实例化一个或多个类

工厂模式

确定 `UIView` 是从 XIB 加载还是从代码实例化

一个ViewModel,多个Activity

从单个方法实例化一定数量的唯一对象