我有一个UIView,我想给出一个渐变背景,我想知道如何尽可能高效地实现它。
我正在考虑三种选择:
创建一个UIImageView作为子视图,并为其显示要显示的渐变图像。
在原始UIView的drawRect中绘制渐变图像。
在drawRect:中绘制渐变,但这次使用CoreGraphics“从头开始创建”。
这三个中哪一个是最快/最少内存密集型的? (跑得最快,不写。)
谢谢!
答案 0 :(得分:2)
要记住的事情:
您几乎无法控制drawRect执行的频率,因此您不希望在该方法中执行内存分配等操作。
drawRect可以在同一个运行循环中多次调用,因此在该方法中创建自动释放的对象也不是一个好主意,因为它们可能会叠加并消耗更多的内存而不是必需的。
答案 1 :(得分:1)
如果将渐变渲染为UIImage很方便 - 您可能需要考虑类似的内容。
UIImage * gradientImage = GetGradientImage(); //你的代码 self.view.backgroundColor = [UIColor colorWithPatternImage:gradientImage];
您需要平衡大梯度所需的内存与重复计算和绘制它所需的时间。
这适用于很多想要进行小背景自定义的地方,或者你认为需要UIImageView的地方,只是为了在另一个视图上绘制背景。
托德