我遇到与this guy相同的问题,并且提供的解决方案无法解决问题(也不清楚它是否在其他SO问题中解决了这个问题。)
当您更改UIView的.frame
大小时,如果您没有更改默认.contentMode
,那么肯定是drawRect
(Quartz路径)中的自定义绘图应该是规模与UIView的大小?我没有。现在我可以调用setNeedsDisplay
并重新绘制,但我正在寻找可以动画的缩放。这可能吗?
相反,对我来说发生的事情是石英图纸只是裁剪而是保持其尺寸。我已尝试直接设置contentMode
以及clipsToBounds
和其他实验,但无论我尝试什么,都不会对Quartz进行自动缩放。
答案 0 :(得分:1)
一定是其他的东西.. Here's一个简单的演示我一起来仔细检查contentMode按预期工作 - 当然,当contentMode设置为默认的“scale”时,后备位图会向上/向下扩展填写”。并在视图上调用setNeedsDisplay重新渲染图像。
你对这个观点做了什么其他的事情? (你没有改变它的contentStretch属性,对吗?)你是否正在对视图的层做任何事情?您是否检查过视图中的contentMode是否真的是UIViewContentModeScaleToFill?另外,你是动画视图本身的框架还是超级视图?
答案 1 :(得分:0)
您可以尝试覆盖 drawLayer
- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx
{
[super drawLayer:layer inContext:ctx];
/*here to change self.frame
self.frame = CGRectMack(a, b, c, d);
*/
}