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