如何在drawRect中缩放自定义绘图:

时间:2012-04-10 08:45:50

标签: iphone objective-c ipad uiview core-graphics

我遇到与this guy相同的问题,并且提供的解决方案无法解决问题(也不清楚它是否在其他SO问题中解决了这个问题。)

当您更改UIView的.frame大小时,如果您没有更改默认.contentMode,那么肯定是drawRect(Quartz路径)中的自定义绘图应该是规模与UIView的大小?我没有。现在我可以调用setNeedsDisplay并重新绘制,但我正在寻找可以动画的缩放。这可能吗?

相反,对我来说发生的事情是石英图纸只是裁剪而是保持其尺寸。我已尝试直接设置contentMode以及clipsToBounds和其他实验,但无论我尝试什么,都不会对Quartz进行自动缩放。

2 个答案:

答案 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);
    */
}