在哪里放置代码来更改UIView的属性

时间:2011-03-25 14:16:32

标签: ios uiview

如果我以编程方式创建UIView并且我希望更改UIView属性(例如,背景,或实际上,搞乱CALayers),我是否必须将代码置于UIView之外,例如在View控制器中?我可以把代码放在UIView里面吗?

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

2 个答案:

答案 0 :(得分:1)

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

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

如果它是一个始终由UIViewController管理的单个较大视图,则可以在UIViewController中保留一些信息。但是,如果你最终继续子类化UIView,最好将数据保存在UIView中。

总的来说,我认为值得您花时间使用界面构建器将这些数据推送到xib中。如果要修改它,通过代码填充的魔术值(如颜色或大小)将始终是一个问题。我发现修改xib要容易得多。

答案 1 :(得分:1)

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

  • (void)willMoveToSuperview:(UIView *)newSuperview;
  • (无效)didMoveToSuperview;
只要您将视图作为子视图添加到另一个视图,就会调用

,此时您已经拥有了框架和所有属性,并且您可以根据需要进行进一步的自定义。

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

希望这有帮助。