为什么UIButton帧设置如此之慢

时间:2014-03-13 11:35:52

标签: ios iphone xcode instruments

最近我一直在为应用程序的乐器进行一些性能分析。这就是我注意到的:

pic1 pic2

即UIButton帧设置非常慢。

为了排除它是由类型转换(从int到CGFloat)引起的概率,我尝试了以下内容:

pic3

我也尝试过:

pic4

不,也没多大帮助。

最后但并非最不重要的是,我确保它不是由CGRectMake引起的:

pic5

该功能大约被调用650-670次,这使得每帧设置调用大约0.173ms?听起来不错吗?我怎样才能提高性能?

1 个答案:

答案 0 :(得分:1)

嗯......我不是百分百确定,但您使用的是具有固定尺寸的按钮类型UIButtonTypeDetailDisclosure

尝试只设置它的中心而不是框架。

myDetailButton.center = CGPointMake(12, 12);

而不是......

myDetailButton.frame = CGRectMake(0, 0, 23, 23);

此外,f不是必需的,而IIRC实际上可能需要比使用时更多的内存。只需使用2323.0代替23.0f即可。我不得不为此找到一个参考。

修改

话虽如此,我刚刚在问题的底部看到了你的时间统计数据。

您在这里看到的百分比是相对的。 0.173毫秒几乎没有时间。

如果不多次运行该功能,您可能会获得更好的性能提升。你正在运行它700次。好多啊!你真的需要多次运行它吗?你甚至不能将那么多按钮同时放在屏幕上。

也许你需要将它们排队?毕竟,您正在使用MKMapView