查看堆栈或绘图

View stack or Drawing

我正在开发一个日历应用程序,我在滚动视图的每一页中都有很多视图。问题是在模拟器上运行良好,但是当我在设备上安装应用程序时,页面之间的滑动非常缓慢。

我注意到很多时间都花在了购买上:

并在 drawRect 中绘制所有视图涉及更改所有方法和顺序,并且在调整大小时也会有不同的行为。

问题是如何解决延迟问题? drawRect 比子视图更好吗?

我可以向您推荐一个替代方案。我最近开发了一个基于日历的 iOS 应用程序,并使用了这个已经可用的 FSCalendar 工具。这在模拟器和设备上滚动月视图时非常流畅。

所以,您可能想尝试一下!

我想出的解决方案是有一个容器,我可以在其中放置所有视图,然后将该视图转换为 UIImage,然后从 20 个 UIView 我设法减少到一个 UIImageView

我使用此方法从 UIView 获取图像:

- (UIImage *)snapShotForView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}