假设我使用界面构建器绘制包含xib
的{{1}}文件。
此视图可以是圆形或多边形,但其中的所有其他内容都是相同的,只是形状不同。我怎么能在一个UIView
子类中做到这一点?当我想要一个圆圈时,我可以在显示笔尖时加载一个圆圈,当我想要一个多边形时,我也可以从笔尖加载一个多边形。
现在我正在使用UIView
的子类,以便我有一个UIView
类和一个Circle
类。但是要从nib文件加载其中任何一个,我可能需要创建另一个Polygon
文件,让每个文件包含一个xib
子类。
- 更新:
例如,我有UIView
使用UITableView
作为CellView
。 UITableViewCell
是从nib文件初始化的,但也有自定义的类实现。然后在CellView
内有一个显示不同形状的CellView
,它可以是圆形或多边形。 'ShapeView'也有一个自定义的实现,但我现在没有使用另一个nib文件来创建它。我希望在ShapeView
加载时CellView
将加载一些传入的参数,以便它显示正确的形状。
答案 0 :(得分:0)
直截了当的方法是拥有一个具有shape属性的UIView
子类。像这样:
typedef enum ShapeType {
ST_Circle,
ST_Square,
ST_Polygon
};
@class ShapeView : UIView {
}
@property ShapeType shape;
@end
在-drawRect
方法中,只需在绘制前检查shape
。
或者,您可以拥有一个多边形边数的属性。您可以使用0或1表示圆圈。在-drawRect
方法中,根据边数绘制多边形。
如果您希望能够在Interface Builder中设置属性,则可以设置视图标记,并将其转换为-awakeFromNib
中的形状类型(或边数)。