IOS Quartz 2D drawRect和调整大小
我正在使用一个名为Quarkee的应用程序将徽标从SVG转换为Quartz 2d代码,这非常有用。唯一的问题是我似乎不知道如何调整结果的大小。如果我设置UIView的框架,drawRect的结果在框架中保持巨大。我如何得到它是我正在设置的框架的大小 下面是out的一个示例 有人能帮忙吗IOS Quartz 2D drawRect和调整大小,ios,drawrect,cgcontext,Ios,Drawrect,Cgcontext,我正在使用一个名为Quarkee的应用程序将徽标从SVG转换为Quartz 2d代码,这非常有用。唯一的问题是我似乎不知道如何调整结果的大小。如果我设置UIView的框架,drawRect的结果在框架中保持巨大。我如何得到它是我正在设置的框架的大小 下面是out的一个示例 有人能帮忙吗 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGColorSpaceRef col
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorspace_1 = CGColorSpaceCreateDeviceRGB();
CGFloat components_1[] = {0.9961,0.9961,0.9961, 1.0000};
CGColorRef color_1 = CGColorCreate(colorspace_1, components_1);
CGContextSetFillColorWithColor(context,color_1);
CGContextMoveToPoint(context, 0.4960,0.1090);
CGContextAddLineToPoint(context,662.9260,0.1090);
CGContextAddLineToPoint(context,662.9260,227.8780);
CGContextAddLineToPoint(context,0.4960,227.8780);
CGContextAddLineToPoint(context,0.4960,0.1090);
CGContextClosePath(context);
CGContextFillPath(context);
看看这些值:
CGContextMoveToPoint(context, 0.4960,0.1090);
CGContextAddLineToPoint(context,662.9260,0.1090);
CGContextAddLineToPoint(context,662.9260,227.8780);
CGContextAddLineToPoint(context,0.4960,227.8780);
CGContextAddLineToPoint(context,0.4960,0.1090);
调用
drawRect
方法时,可以使用self.bounds
获取视图的当前rect并根据它调整这些值。你说你已经从一个应用程序中生成了这个代码——这些应用程序在生成代码时通常会硬编码你绘制的图形的大小,因此,您必须了解这些值与您绘制的图像的实际大小之间的关系,并根据自身边界使其动态化…
大小…这里的解决方案是使用view.transform=CGAffineTransformMakeScale(0.5f,0.5f);要调整视图的大小假设我使用自定义drawRect调用我的自定义视图(如上所述)UICustomView*myView=[[UICustomView alloc]initWithFrame:CGRectMake(200,70,80,30)];它的框架是正确的,但是在drawRect中绘制的结果对于框架来说太大了。如何使drawRect将上下文调整为给定rect的大小;CGContextScaleCTM(上下文,1.0,-1.0);例如,还要补充的是,生成的drawRect非常庞大,有许多路径,因此无法更改硬编码的坐标。谢谢graver。在这种情况下,drawRect在上下文中绘制了一个包含数百行代码的完整徽标,并且您的正确点是硬编码的,因此无法将它们重写到提供的rect的边界。