我创建了一个视图,并希望稍后根据用户触摸它时的应用状态来绘制或添加文本。
我是否可以使用drawRect执行此操作,因为我有多个可能的绘图/文本项目?如果是这样,你如何调用它?如果没有,我应该在哪里完成这个?
提前致谢,
史蒂夫
答案 0 :(得分:1)
您可以通过调用
使UIView无效[myView setNeedsDisplay];
OS会在适当的时间为myView调用drawRect。
答案 1 :(得分:0)
绘制简单对象(如文本,文件中的图像或纯色矩形)的最佳方法是将这些元素添加为视图的子视图。一般来说,除非你需要通过添加子视图来做一些你不能做的事情,否则更容易从不担心drawRect:
方法。例如,如果要基于某些动态数据创建饼图,则编写自己的绘图例程可能是有意义的。否则,当您只使用视图和子视图时,始终会在适当的时候自动为您调用drawRect:
,包括更改这些对象的任何属性以调用视觉差异,例如更改字体颜色,或子视图的像素坐标。
以下是如何向视图添加两个子视图的快速示例,例如在视图控制器的loadView
方法中:
CGRect helloFrame = CGRectMake(10, 10, 100, 50);
UILabel* helloLabel = [[UILabel alloc] initWithFrame:helloFrame];
helloLabel.text = @"hello,";
helloLabel.textColor = [UIColor redColor];
[self.view addSubview:helloLabel];
CGRect worldFrame = CGRectMake(60, 60, 100, 50);
UILabel* worldLabel = [[UILabel alloc] initWithFrame:worldFrame];
worldLabel.text = @"world!";
worldLabel.textColor = [UIColor orangeColor];
[self.view addSubview:worldLabel];