查看堆栈或绘图

Posted

技术标签:

【中文标题】查看堆栈或绘图【英文标题】:View stack or Drawing 【发布时间】:2015-09-17 11:14:56 【问题描述】:

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

我注意到购买的时间很多:

masksToBounds - 我需要一些圆形视图-s addSubview - 有很多

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

问题是如何解决滞后问题? drawRect 比子视图好吗?

【问题讨论】:

【参考方案1】:

我可以建议您另一种选择。我最近开发了一个基于日历的 ios 应用程序,并使用了这个已经可用的FSCalendar 工具。滚动浏览月份视图时,这在模拟器和设备上运行非常流畅。

所以,你可能想试试这个!

【讨论】:

不知道为什么我在这里投了反对票。我的目的是让 OP 知道已经有可用的流畅运行的日历。所以,如果它适合 OP,而不是重新发明***,它可以被重复使用。这就是 SO & Git-Hub 社区/工具的全部目的。令人失望!【参考方案2】:

我想出的解决方案是有一个容器来放置所有视图,然后我将该视图转换为 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;

【讨论】:

以上是关于查看堆栈或绘图的主要内容,如果未能解决你的问题,请参考以下文章

实时监控 Java 中的总线程堆栈大小

Xcode - 时间分析器并查看用户执行的堆栈?

如何在 Livecode 中保存绘图?

如何查看xcode调用堆栈

如何确定 Rust 中的 new() 何时在堆栈或堆上分配

最大线程堆栈大小.NET?