查看堆栈或绘图
View stack or Drawing
我正在开发一个日历应用程序,我在滚动视图的每一页中都有很多视图。问题是在模拟器上运行良好,但是当我在设备上安装应用程序时,页面之间的滑动非常缓慢。
我注意到很多时间都花在了购买上:
masksToBounds
- 我需要一些圆形视图
addSubview
- 有很多
并在 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;
}
我正在开发一个日历应用程序,我在滚动视图的每一页中都有很多视图。问题是在模拟器上运行良好,但是当我在设备上安装应用程序时,页面之间的滑动非常缓慢。
我注意到很多时间都花在了购买上:
masksToBounds
- 我需要一些圆形视图addSubview
- 有很多
并在 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;
}