我的 UIView 结构:我有一个"master"
UIView (实际上UIScrollView
,但它只是每个分页滚动的目的)。作为对此的子视图,"master"
我有我的"pageView"
(子类UIScrollView
)。这UIScrollView
可以有任何内容(例如 UIImageView)。"master"
有另一个子视图:PaintView
(UIView 的子类)。使用这个视图,我跟踪手指的运动并绘制它。
结构如下所示:
[master.view addSubview: pageView];
[master.view addSubview: paintView];
我知道当用户放大(pageView 对此负责)和委托/方法调用时,我paintView
在缩放操作期间根据缩放更改更改框架。缩放后(scrollViewDidEndZooming:withView:atScale)
我调用paintView的自定义重绘方法。
重绘方法和drawRect:
-(void)redrawForScale:(float)scale {
for (UIBezierPath *path in _pathArray) {
//TransformMakeScale...
}
[self setNeedsDisplay];
}
-(void)drawRect:(CGRect)rect {
for (UIBezierPath *path in _pathArray) {
[path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
}
问题:当我放大时,我收到内存警告并且应用程序崩溃。
在分配分析器中,我可以看到应用程序拥有大量内存,但我不明白为什么。当我不调用'setNeedDisplay'
我的'redrawForScale'
方法时,应用程序不会崩溃。
当我在 drawRect 中记录矩形时,我看到如下值:{{0, 0.299316}, {4688, 6630}}。