Xcode iPad:QuartzCore:多种形状

Xcode iPad:QuartzCore:多种形状,xcode,ipad,quartz-2d,Xcode,Ipad,Quartz 2d,我是quartzCore的新手,我不太容易适应它。 我想在视图中绘制一些基本形状,并单独旋转/放大每个形状 你能告诉我怎么做吗? 谢谢实际的Quartz操作不能保证非常快速-如果您想要一组单独的形状,它们可以单独旋转/缩放,那么最好将每个形状放在单独的视图中,并通过调整变换属性来执行旋转和缩放。iOS中的合成器通过缓存所有视图的图像来工作,对变换的调整只是调整缓存图像在屏幕上的绘制方式。因此,如果放大得太远,像素化将成为一个问题,但即使没有进入CATILDELAYER等机制,以异步和按需提供不同

我是quartzCore的新手,我不太容易适应它。 我想在视图中绘制一些基本形状,并单独旋转/放大每个形状

你能告诉我怎么做吗?
谢谢

实际的Quartz操作不能保证非常快速-如果您想要一组单独的形状,它们可以单独旋转/缩放,那么最好将每个形状放在单独的视图中,并通过调整变换属性来执行旋转和缩放。iOS中的合成器通过缓存所有视图的图像来工作,对变换的调整只是调整缓存图像在屏幕上的绘制方式。因此,如果放大得太远,像素化将成为一个问题,但即使没有进入CATILDELAYER等机制,以异步和按需提供不同级别的细节(如在Safari中,放大显示视图的像素化版本,然后在准备好后立即转换为全分辨率),您可以先将视图调整为最大大小,然后再将其缩小

在不确切了解您的专业水平的情况下,您可能希望声明一个或多个自定义UIView子类来绘制您的形状。然后,您将希望通过其中的CoreGraphics调用实现自己的功能

UIView上的transform属性采用CGAffineTransform,可以在CoreAnimation意义上设置动画

如果其中一个自定义UIView只是从视图的左上角到右下角画一条对角线(这可能是一件无用的事情,但出于示例的目的),您可能会:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);

    // we're relative to the inside of the view, so...
    CGPoint points[2]; 
    points[0] = CGPointMake(0, 0); 
    points[1] = CGPointMake(self.bounds.size.width, self.bounds.size.height);

    CGContextSetGrayStrokeColor(context, 0.6, 0.6);
    CGContextSetLineWidth(context, 2.0);
    CGContextStrokeLineSegments(context, points, 2);

    CGContextRestoreGState(context);
}
然后你可以做,例如:

view.transform = CGAffineTransformMakeScale(0.5, 0.5);