2011-03-25 40 views
1

如果我以编程的方式创建一个UIView,并且我希望改变UIView属性(例如,或者实际上与CALayers混淆),我必须将代码UIView之外,如在视图控制器?我可以把代码放在UIView里面吗?哪里可以放置代码来改变UIView的属性

我正在检查CoreAnimationKioskStyleMenu示例,它的代码位于UIView内部,但它是从Nib加载的,可以放在awakeFromNib中,所以它似乎不适用于我的情况。

回答

1

这取决于。显然,处理这个问题的好方法是使用一个xib文件,因为它被设计用来保存这样的数据,但这并不总是每种情况的最佳答案。

如果该视图旨在在整个应用程序中经常重复使用(如按钮或某个小部件),则最好将所有该自定义存储在UIView的子类中。

如果它的单个大视图总是由UIViewController管理,那么可以在UIViewController中保留一些信息。但是,如果你最终继承了UIView子类,那么最好的做法是将数据保存在UIView中。

作为一般性说明,我相信它值得您花时间将这些数据尽可能多地用到使用接口构建器的xib中。如果你想修改它,魔法值(如颜色或大小)贯穿你的代码将永远是一个问题。我发现修改xib要容易得多。

+0

重读你的评论,如果你有CALayer级别的代码,那么你一定要把它放在UIView的子类中。 – 2011-03-25 14:29:38

1

实际上有一些方法可以放置初始化/自定义代码。

  • (void)willMoveToSuperview:(UIView *)newSuperview;
  • (void)didMoveToSuperview;

只要您将视图作为子视图添加到另一个视图中,此时您已经拥有该框架和所有属性,并且您可以根据需要进行进一步自定义。

  • (void)layoutSubviews - 通常用于更改子视图的框架和布局组织。 每次需要由系统重绘视图时,或者当您在UIView上专门调用[self setNeedsLayout]时,都会调用它。

希望这会有所帮助。